Differences Between: [Versions 310 and 402] [Versions 311 and 402] [Versions 39 and 402] [Versions 400 and 402] [Versions 401 and 402]
1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * External API. 19 * 20 * @package core_competency 21 * @copyright 2016 Frédéric Massart - FMCorz.net 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 25 namespace core_competency; 26 defined('MOODLE_INTERNAL') || die(); 27 28 require_once("$CFG->libdir/grade/grade_scale.php"); 29 30 use context_course; 31 use context_module; 32 use context_system; 33 use context_user; 34 use core_competency\external\competency_exporter; 35 use core_competency\external\competency_framework_exporter; 36 use core_competency\external\course_competency_exporter; 37 use core_competency\external\course_module_competency_exporter; 38 use core_competency\external\evidence_exporter; 39 use core_competency\external\performance_helper; 40 use core_competency\external\plan_exporter; 41 use core_competency\external\template_exporter; 42 use core_competency\external\user_competency_exporter; 43 use core_competency\external\user_competency_plan_exporter; 44 use core_competency\external\user_evidence_competency_exporter; 45 use core_competency\external\user_evidence_exporter; 46 use core_external\external_api; 47 use core_external\external_function_parameters; 48 use core_external\external_multiple_structure; 49 use core_external\external_single_structure; 50 use core_external\external_value; 51 use grade_scale; 52 use invalid_parameter_exception; 53 54 /** 55 * External API class. 56 * 57 * @package core_competency 58 * @copyright 2016 Frédéric Massart - FMCorz.net 59 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 60 */ 61 class external extends external_api { 62 63 /** 64 * Returns a prepared structure to use a context parameters. 65 * @return external_single_structure 66 */ 67 protected static function get_context_parameters() { 68 $id = new external_value( 69 PARAM_INT, 70 'Context ID. Either use this value, or level and instanceid.', 71 VALUE_DEFAULT, 72 0 73 ); 74 $level = new external_value( 75 PARAM_ALPHA, 76 'Context level. To be used with instanceid.', 77 VALUE_DEFAULT, 78 '' 79 ); 80 $instanceid = new external_value( 81 PARAM_INT, 82 'Context instance ID. To be used with level', 83 VALUE_DEFAULT, 84 0 85 ); 86 return new external_single_structure(array( 87 'contextid' => $id, 88 'contextlevel' => $level, 89 'instanceid' => $instanceid, 90 )); 91 } 92 93 /** 94 * Returns description of create_competency_framework() parameters. 95 * 96 * @return external_function_parameters 97 */ 98 public static function create_competency_framework_parameters() { 99 $structure = competency_framework_exporter::get_create_structure(); 100 $params = array('competencyframework' => $structure); 101 return new external_function_parameters($params); 102 } 103 104 /** 105 * Create a new competency framework 106 * 107 * @param array $competencyframework A single param with all the fields for a competency framework. 108 * @return \stdClass The new record 109 */ 110 public static function create_competency_framework($competencyframework) { 111 global $PAGE; 112 113 $params = self::validate_parameters(self::create_competency_framework_parameters(), array( 114 'competencyframework' => $competencyframework 115 )); 116 $params = $params['competencyframework']; 117 118 $context = self::get_context_from_params($params); 119 self::validate_context($context); 120 $output = $PAGE->get_renderer('core'); 121 122 unset($params['contextlevel']); 123 unset($params['instanceid']); 124 $params['contextid'] = $context->id; 125 126 $params = (object) $params; 127 $result = api::create_framework($params); 128 $exporter = new competency_framework_exporter($result); 129 $record = $exporter->export($output); 130 return $record; 131 } 132 133 /** 134 * Returns description of create_competency_framework() result value. 135 * 136 * @return external_description 137 */ 138 public static function create_competency_framework_returns() { 139 return competency_framework_exporter::get_read_structure(); 140 } 141 142 /** 143 * Returns description of read_competency_framework() parameters. 144 * 145 * @return external_function_parameters 146 */ 147 public static function read_competency_framework_parameters() { 148 $id = new external_value( 149 PARAM_INT, 150 'Data base record id for the framework', 151 VALUE_REQUIRED 152 ); 153 154 $params = array( 155 'id' => $id, 156 ); 157 return new external_function_parameters($params); 158 } 159 160 /** 161 * Read a competency framework by id. 162 * 163 * @param int $id The id of the framework. 164 * @return \stdClass 165 */ 166 public static function read_competency_framework($id) { 167 global $PAGE; 168 169 $params = self::validate_parameters(self::read_competency_framework_parameters(), array( 170 'id' => $id, 171 )); 172 173 $framework = api::read_framework($params['id']); 174 self::validate_context($framework->get_context()); 175 $output = $PAGE->get_renderer('core'); 176 $exporter = new competency_framework_exporter($framework); 177 $record = $exporter->export($output); 178 return $record; 179 } 180 181 /** 182 * Returns description of read_competency_framework() result value. 183 * 184 * @return external_description 185 */ 186 public static function read_competency_framework_returns() { 187 return competency_framework_exporter::get_read_structure(); 188 } 189 190 /** 191 * Returns description of competency_viewed() parameters. 192 * 193 * @return external_function_parameters 194 */ 195 public static function competency_viewed_parameters() { 196 $id = new external_value( 197 PARAM_INT, 198 'The competency id', 199 VALUE_REQUIRED 200 ); 201 $params = array( 202 'id' => $id 203 ); 204 return new external_function_parameters($params); 205 } 206 207 /** 208 * Log event competency viewed. 209 * 210 * @param int $id The competency ID. 211 * @return boolean 212 */ 213 public static function competency_viewed($id) { 214 $params = self::validate_parameters(self::competency_viewed_parameters(), array( 215 'id' => $id 216 )); 217 return api::competency_viewed($params['id']); 218 } 219 220 /** 221 * Returns description of competency_viewed() result value. 222 * 223 * @return external_description 224 */ 225 public static function competency_viewed_returns() { 226 return new external_value(PARAM_BOOL, 'True if the event competency viewed was logged'); 227 } 228 229 /** 230 * Returns description of duplicate_competency_framework() parameters. 231 * 232 * @return external_function_parameters 233 */ 234 public static function duplicate_competency_framework_parameters() { 235 $id = new external_value( 236 PARAM_INT, 237 'Data base record id for the framework', 238 VALUE_REQUIRED 239 ); 240 241 $params = array( 242 'id' => $id, 243 ); 244 return new external_function_parameters($params); 245 } 246 247 /** 248 * Duplicate a competency framework 249 * 250 * @param int $id The competency framework id 251 * @return boolean 252 */ 253 public static function duplicate_competency_framework($id) { 254 global $PAGE; 255 $params = self::validate_parameters(self::duplicate_competency_framework_parameters(), array( 256 'id' => $id, 257 )); 258 259 $framework = api::read_framework($params['id']); 260 self::validate_context($framework->get_context()); 261 262 $output = $PAGE->get_renderer('core'); 263 $framework = api::duplicate_framework($params['id']); 264 $exporter = new competency_framework_exporter($framework); 265 $record = $exporter->export($output); 266 return $record; 267 } 268 269 /** 270 * Returns description of duplicate_competency_framework() result value. 271 * 272 * @return external_description 273 */ 274 public static function duplicate_competency_framework_returns() { 275 return competency_framework_exporter::get_read_structure(); 276 } 277 278 /** 279 * Returns description of delete_competency_framework() parameters. 280 * 281 * @return external_function_parameters 282 */ 283 public static function delete_competency_framework_parameters() { 284 $id = new external_value( 285 PARAM_INT, 286 'Data base record id for the framework', 287 VALUE_REQUIRED 288 ); 289 290 $params = array( 291 'id' => $id, 292 ); 293 return new external_function_parameters($params); 294 } 295 296 /** 297 * Delete a competency framework 298 * 299 * @param int $id The competency framework id 300 * @return boolean 301 */ 302 public static function delete_competency_framework($id) { 303 $params = self::validate_parameters(self::delete_competency_framework_parameters(), array( 304 'id' => $id, 305 )); 306 307 $framework = api::read_framework($params['id']); 308 self::validate_context($framework->get_context()); 309 310 return api::delete_framework($params['id']); 311 } 312 313 /** 314 * Returns description of delete_competency_framework() result value. 315 * 316 * @return external_description 317 */ 318 public static function delete_competency_framework_returns() { 319 return new external_value(PARAM_BOOL, 'True if the delete was successful'); 320 } 321 322 /** 323 * Returns description of update_competency_framework() parameters. 324 * 325 * @return external_function_parameters 326 */ 327 public static function update_competency_framework_parameters() { 328 $structure = competency_framework_exporter::get_update_structure(); 329 $params = array('competencyframework' => $structure); 330 return new external_function_parameters($params); 331 } 332 333 /** 334 * Update an existing competency framework 335 * 336 * @param array $competencyframework An array with all the fields for a competency framework. 337 * @return boolean 338 */ 339 public static function update_competency_framework($competencyframework) { 340 341 $params = self::validate_parameters(self::update_competency_framework_parameters(), array( 342 'competencyframework' => $competencyframework 343 )); 344 $params = $params['competencyframework']; 345 346 $framework = api::read_framework($params['id']); 347 self::validate_context($framework->get_context()); 348 349 $params = (object) $params; 350 351 return api::update_framework($params); 352 } 353 354 /** 355 * Returns description of update_competency_framework() result value. 356 * 357 * @return external_description 358 */ 359 public static function update_competency_framework_returns() { 360 return new external_value(PARAM_BOOL, 'True if the update was successful'); 361 } 362 363 /** 364 * Returns description of list_competency_frameworks() parameters. 365 * 366 * @return external_function_parameters 367 */ 368 public static function list_competency_frameworks_parameters() { 369 $sort = new external_value( 370 PARAM_ALPHANUMEXT, 371 'Column to sort by.', 372 VALUE_DEFAULT, 373 'shortname' 374 ); 375 $order = new external_value( 376 PARAM_ALPHA, 377 'Sort direction. Should be either ASC or DESC', 378 VALUE_DEFAULT, 379 '' 380 ); 381 $skip = new external_value( 382 PARAM_INT, 383 'Skip this number of records before returning results', 384 VALUE_DEFAULT, 385 0 386 ); 387 $limit = new external_value( 388 PARAM_INT, 389 'Return this number of records at most.', 390 VALUE_DEFAULT, 391 0 392 ); 393 $includes = new external_value( 394 PARAM_ALPHA, 395 'What other contextes to fetch the frameworks from. (children, parents, self)', 396 VALUE_DEFAULT, 397 'children' 398 ); 399 $onlyvisible = new external_value( 400 PARAM_BOOL, 401 'Only visible frameworks will be returned if visible true', 402 VALUE_DEFAULT, 403 false 404 ); 405 $query = new external_value( 406 PARAM_RAW, 407 'A query string to filter the results', 408 VALUE_DEFAULT, 409 '' 410 ); 411 412 $params = array( 413 'sort' => $sort, 414 'order' => $order, 415 'skip' => $skip, 416 'limit' => $limit, 417 'context' => self::get_context_parameters(), 418 'includes' => $includes, 419 'onlyvisible' => $onlyvisible, 420 'query' => $query, 421 ); 422 return new external_function_parameters($params); 423 } 424 425 /** 426 * List the existing competency frameworks 427 * 428 * @param int $sort 429 * @param string $order 430 * @param string $skip 431 * @param int $limit 432 * @param array $context 433 * @param bool $includes 434 * @param bool $onlyvisible 435 * @param string $query 436 * 437 * @return array 438 * @throws \required_capability_exception 439 * @throws invalid_parameter_exception 440 */ 441 public static function list_competency_frameworks($sort, $order, $skip, $limit, $context, $includes, $onlyvisible, 442 $query = '') { 443 global $PAGE; 444 445 $params = self::validate_parameters(self::list_competency_frameworks_parameters(), array( 446 'sort' => $sort, 447 'order' => $order, 448 'skip' => $skip, 449 'limit' => $limit, 450 'context' => $context, 451 'includes' => $includes, 452 'onlyvisible' => $onlyvisible, 453 'query' => $query, 454 )); 455 456 $context = self::get_context_from_params($params['context']); 457 self::validate_context($context); 458 $output = $PAGE->get_renderer('core'); 459 460 if ($params['order'] !== '' && $params['order'] !== 'ASC' && $params['order'] !== 'DESC') { 461 throw new invalid_parameter_exception('Invalid order param. Must be ASC, DESC or empty.'); 462 } 463 464 $results = api::list_frameworks($params['sort'], 465 $params['order'], 466 $params['skip'], 467 $params['limit'], 468 $context, 469 $params['includes'], 470 $params['onlyvisible'], 471 $params['query']); 472 $records = array(); 473 foreach ($results as $result) { 474 $exporter = new competency_framework_exporter($result); 475 $record = $exporter->export($output); 476 array_push($records, $record); 477 } 478 return $records; 479 } 480 481 /** 482 * Returns description of list_competency_frameworks() result value. 483 * 484 * @return external_description 485 */ 486 public static function list_competency_frameworks_returns() { 487 return new external_multiple_structure(competency_framework_exporter::get_read_structure()); 488 } 489 490 /** 491 * Returns description of count_competency_frameworks() parameters. 492 * 493 * @return external_function_parameters 494 */ 495 public static function count_competency_frameworks_parameters() { 496 $includes = new external_value( 497 PARAM_ALPHA, 498 'What other contextes to fetch the frameworks from. (children, parents, self)', 499 VALUE_DEFAULT, 500 'children' 501 ); 502 503 $params = array( 504 'context' => self::get_context_parameters(), 505 'includes' => $includes 506 ); 507 return new external_function_parameters($params); 508 } 509 510 /** 511 * Count the existing competency frameworks 512 * 513 * @param array $context 514 * @param string $includes 515 * @return int 516 */ 517 public static function count_competency_frameworks($context, $includes) { 518 $params = self::validate_parameters(self::count_competency_frameworks_parameters(), array( 519 'context' => $context, 520 'includes' => $includes 521 )); 522 523 $context = self::get_context_from_params($params['context']); 524 self::validate_context($context); 525 526 return api::count_frameworks($context, $params['includes']); 527 } 528 529 /** 530 * Returns description of count_competency_frameworks() result value. 531 * 532 * @return external_description 533 */ 534 public static function count_competency_frameworks_returns() { 535 return new external_value(PARAM_INT, 'The number of competency frameworks found.'); 536 } 537 538 /** 539 * Returns description of competency_framework_viewed() parameters. 540 * 541 * @return external_function_parameters 542 */ 543 public static function competency_framework_viewed_parameters() { 544 $id = new external_value( 545 PARAM_INT, 546 'The competency framework id', 547 VALUE_REQUIRED 548 ); 549 550 $params = array( 551 'id' => $id 552 ); 553 return new external_function_parameters($params); 554 } 555 556 /** 557 * Log event competency framework viewed. 558 * 559 * @param int $id The competency framework ID. 560 * @return boolean 561 */ 562 public static function competency_framework_viewed($id) { 563 $params = self::validate_parameters(self::competency_framework_viewed_parameters(), array( 564 'id' => $id 565 )); 566 return api::competency_framework_viewed($params['id']); 567 568 } 569 570 /** 571 * Returns description of competency_framework_viewed() result value. 572 * 573 * @return external_description 574 */ 575 public static function competency_framework_viewed_returns() { 576 return new external_value(PARAM_BOOL, 'True if the event competency framework was logged'); 577 } 578 579 /** 580 * Returns description of create_competency() parameters. 581 * 582 * @return external_function_parameters 583 */ 584 public static function create_competency_parameters() { 585 $structure = competency_exporter::get_create_structure(); 586 $params = array('competency' => $structure); 587 return new external_function_parameters($params); 588 } 589 590 /** 591 * Create a new competency 592 * 593 * @param array $competency All the fields for a competency record (including id) 594 * @return array the competency 595 */ 596 public static function create_competency($competency) { 597 global $PAGE; 598 599 $params = self::validate_parameters(self::create_competency_parameters(), array( 600 'competency' => $competency 601 )); 602 603 $params = $params['competency']; 604 $framework = api::read_framework($params['competencyframeworkid']); 605 $context = $framework->get_context(); 606 self::validate_context($context); 607 $output = $PAGE->get_renderer('core'); 608 609 $params = (object) $params; 610 $result = api::create_competency($params); 611 $exporter = new competency_exporter($result, array('context' => $context)); 612 $record = $exporter->export($output); 613 return $record; 614 } 615 616 /** 617 * Returns description of create_competency() result value. 618 * 619 * @return external_description 620 */ 621 public static function create_competency_returns() { 622 return competency_exporter::get_read_structure(); 623 } 624 625 /** 626 * Returns description of read_competency() parameters. 627 * 628 * @return external_function_parameters 629 */ 630 public static function read_competency_parameters() { 631 $id = new external_value( 632 PARAM_INT, 633 'Data base record id for the competency', 634 VALUE_REQUIRED 635 ); 636 637 $params = array( 638 'id' => $id, 639 ); 640 return new external_function_parameters($params); 641 } 642 643 /** 644 * Read a competency by id. 645 * 646 * @param int $id The id of the competency 647 * @return \stdClass 648 */ 649 public static function read_competency($id) { 650 global $PAGE; 651 652 $params = self::validate_parameters(self::read_competency_parameters(), array( 653 'id' => $id, 654 )); 655 656 $competency = api::read_competency($params['id']); 657 $context = $competency->get_context(); 658 self::validate_context($context); 659 $output = $PAGE->get_renderer('core'); 660 $exporter = new competency_exporter($competency, array('context' => $context)); 661 $record = $exporter->export($output); 662 return $record; 663 } 664 665 /** 666 * Returns description of read_competency() result value. 667 * 668 * @return external_description 669 */ 670 public static function read_competency_returns() { 671 return competency_exporter::get_read_structure(); 672 } 673 674 /** 675 * Returns description of delete_competency() parameters. 676 * 677 * @return external_function_parameters 678 */ 679 public static function delete_competency_parameters() { 680 $id = new external_value( 681 PARAM_INT, 682 'Data base record id for the competency', 683 VALUE_REQUIRED 684 ); 685 686 $params = array( 687 'id' => $id, 688 ); 689 return new external_function_parameters($params); 690 } 691 692 /** 693 * Delete a competency 694 * 695 * @param int $id The competency id 696 * @return boolean 697 */ 698 public static function delete_competency($id) { 699 $params = self::validate_parameters(self::delete_competency_parameters(), array( 700 'id' => $id, 701 )); 702 703 $competency = api::read_competency($params['id']); 704 $context = $competency->get_context(); 705 self::validate_context($context); 706 707 return api::delete_competency($params['id']); 708 } 709 710 /** 711 * Returns description of delete_competency() result value. 712 * 713 * @return external_description 714 */ 715 public static function delete_competency_returns() { 716 return new external_value(PARAM_BOOL, 'True if the delete was successful'); 717 } 718 719 /** 720 * Returns description of update_competency() parameters. 721 * 722 * @return external_function_parameters 723 */ 724 public static function update_competency_parameters() { 725 $structure = competency_exporter::get_update_structure(); 726 $params = array('competency' => $structure); 727 return new external_function_parameters($params); 728 } 729 730 /** 731 * Update an existing competency 732 * 733 * @param array $competency The array of competency fields (id is required). 734 * @return boolean 735 */ 736 public static function update_competency($competency) { 737 $params = self::validate_parameters(self::update_competency_parameters(), array( 738 'competency' => $competency 739 )); 740 $params = $params['competency']; 741 742 $competency = api::read_competency($params['id']); 743 self::validate_context($competency->get_context()); 744 745 $params = (object) $params; 746 747 return api::update_competency($params); 748 } 749 750 /** 751 * Returns description of update_competency_framework() result value. 752 * 753 * @return external_description 754 */ 755 public static function update_competency_returns() { 756 return new external_value(PARAM_BOOL, 'True if the update was successful'); 757 } 758 759 /** 760 * Returns description of list_competencies() parameters. 761 * 762 * @return external_function_parameters 763 */ 764 public static function list_competencies_parameters() { 765 $filters = new external_multiple_structure(new external_single_structure( 766 array( 767 'column' => new external_value(PARAM_ALPHANUMEXT, 'Column name to filter by'), 768 'value' => new external_value(PARAM_TEXT, 'Value to filter by. Must be exact match') 769 ) 770 )); 771 $sort = new external_value( 772 PARAM_ALPHANUMEXT, 773 'Column to sort by.', 774 VALUE_DEFAULT, 775 '' 776 ); 777 $order = new external_value( 778 PARAM_ALPHA, 779 'Sort direction. Should be either ASC or DESC', 780 VALUE_DEFAULT, 781 '' 782 ); 783 $skip = new external_value( 784 PARAM_INT, 785 'Skip this number of records before returning results', 786 VALUE_DEFAULT, 787 0 788 ); 789 $limit = new external_value( 790 PARAM_INT, 791 'Return this number of records at most.', 792 VALUE_DEFAULT, 793 0 794 ); 795 796 $params = array( 797 'filters' => $filters, 798 'sort' => $sort, 799 'order' => $order, 800 'skip' => $skip, 801 'limit' => $limit 802 ); 803 return new external_function_parameters($params); 804 } 805 806 /** 807 * List the existing competency. 808 * 809 * @param string $filters 810 * @param int $sort 811 * @param string $order 812 * @param string $skip 813 * @param int $limit 814 * 815 * @return array 816 * @throws \required_capability_exception 817 * @throws invalid_parameter_exception 818 */ 819 public static function list_competencies($filters, $sort, $order, $skip, $limit) { 820 global $PAGE; 821 822 $params = self::validate_parameters(self::list_competencies_parameters(), array( 823 'filters' => $filters, 824 'sort' => $sort, 825 'order' => $order, 826 'skip' => $skip, 827 'limit' => $limit 828 )); 829 830 if ($params['order'] !== '' && $params['order'] !== 'ASC' && $params['order'] !== 'DESC') { 831 throw new invalid_parameter_exception('Invalid order param. Must be ASC, DESC or empty.'); 832 } 833 834 $safefilters = array(); 835 $validcolumns = array('id', 'shortname', 'description', 'sortorder', 'idnumber', 836 'parentid', 'competencyframeworkid'); 837 foreach ($params['filters'] as $filter) { 838 if (!in_array($filter['column'], $validcolumns)) { 839 throw new invalid_parameter_exception('Filter column was invalid'); 840 } 841 $safefilters[$filter['column']] = $filter['value']; 842 } 843 844 $context = null; 845 if (isset($safefilters['competencyframeworkid'])) { 846 $framework = api::read_framework($safefilters['competencyframeworkid']); 847 $context = $framework->get_context(); 848 } else { 849 $context = context_system::instance(); 850 } 851 852 self::validate_context($context); 853 $output = $PAGE->get_renderer('core'); 854 855 $results = api::list_competencies( 856 $safefilters, 857 $params['sort'], 858 $params['order'], 859 $params['skip'], 860 $params['limit'] 861 ); 862 863 $records = array(); 864 foreach ($results as $result) { 865 $exporter = new competency_exporter($result, array('context' => $context)); 866 $record = $exporter->export($output); 867 array_push($records, $record); 868 } 869 return $records; 870 } 871 872 /** 873 * Returns description of list_competencies() result value. 874 * 875 * @return external_description 876 */ 877 public static function list_competencies_returns() { 878 return new external_multiple_structure(competency_exporter::get_read_structure()); 879 } 880 881 /** 882 * Returns description of search_competencies() parameters. 883 * 884 * @return external_function_parameters 885 */ 886 public static function search_competencies_parameters() { 887 $searchtext = new external_value( 888 PARAM_RAW, 889 'Text to search for', 890 VALUE_REQUIRED 891 ); 892 $frameworkid = new external_value( 893 PARAM_INT, 894 'Competency framework id', 895 VALUE_REQUIRED 896 ); 897 898 $params = array( 899 'searchtext' => $searchtext, 900 'competencyframeworkid' => $frameworkid 901 ); 902 return new external_function_parameters($params); 903 } 904 905 /** 906 * List the existing competency frameworks 907 * 908 * @param string $searchtext Text to search. 909 * @param int $competencyframeworkid Framework id. 910 * 911 * @return array 912 */ 913 public static function search_competencies($searchtext, $competencyframeworkid) { 914 global $PAGE; 915 916 $params = self::validate_parameters(self::search_competencies_parameters(), array( 917 'searchtext' => $searchtext, 918 'competencyframeworkid' => $competencyframeworkid 919 )); 920 921 $framework = api::read_framework($params['competencyframeworkid']); 922 $context = $framework->get_context(); 923 self::validate_context($context); 924 $output = $PAGE->get_renderer('core'); 925 926 $results = api::search_competencies($params['searchtext'], $params['competencyframeworkid']); 927 $records = array(); 928 foreach ($results as $result) { 929 $exporter = new competency_exporter($result, array('context' => $context)); 930 $record = $exporter->export($output); 931 932 array_push($records, $record); 933 } 934 935 return $records; 936 } 937 938 /** 939 * Returns description of search_competencies() result value. 940 * 941 * @return external_description 942 */ 943 public static function search_competencies_returns() { 944 return new external_multiple_structure(competency_exporter::get_read_structure()); 945 } 946 947 /** 948 * Returns description of count_competencies() parameters. 949 * 950 * @return external_function_parameters 951 */ 952 public static function count_competencies_parameters() { 953 $filters = new external_multiple_structure(new external_single_structure( 954 array( 955 'column' => new external_value(PARAM_ALPHANUMEXT, 'Column name to filter by'), 956 'value' => new external_value(PARAM_TEXT, 'Value to filter by. Must be exact match') 957 ) 958 )); 959 960 $params = array( 961 'filters' => $filters, 962 ); 963 return new external_function_parameters($params); 964 } 965 966 /** 967 * Count the existing competency frameworks. 968 * 969 * @param string $filters Filters to use. 970 * @return boolean 971 */ 972 public static function count_competencies($filters) { 973 $params = self::validate_parameters(self::count_competencies_parameters(), array( 974 'filters' => $filters 975 )); 976 977 $safefilters = array(); 978 $validcolumns = array('id', 'shortname', 'description', 'sortorder', 'idnumber', 'parentid', 'competencyframeworkid'); 979 foreach ($params['filters'] as $filter) { 980 if (!in_array($filter['column'], $validcolumns)) { 981 throw new invalid_parameter_exception('Filter column was invalid'); 982 } 983 $safefilters[$filter['column']] = $filter['value']; 984 } 985 986 $context = null; 987 if (isset($safefilters['competencyframeworkid'])) { 988 $framework = api::read_framework($safefilters['competencyframeworkid']); 989 $context = $framework->get_context(); 990 } else { 991 $context = context_system::instance(); 992 } 993 994 self::validate_context($context); 995 996 return api::count_competencies($safefilters); 997 } 998 999 /** 1000 * Returns description of count_competencies() result value. 1001 * 1002 * @return external_description 1003 */ 1004 public static function count_competencies_returns() { 1005 return new external_value(PARAM_INT, 'The number of competencies found.'); 1006 } 1007 1008 /** 1009 * Returns description of set_parent_competency() parameters. 1010 * 1011 * @return external_function_parameters 1012 */ 1013 public static function set_parent_competency_parameters() { 1014 $competencyid = new external_value( 1015 PARAM_INT, 1016 'The competency id', 1017 VALUE_REQUIRED 1018 ); 1019 $parentid = new external_value( 1020 PARAM_INT, 1021 'The new competency parent id', 1022 VALUE_REQUIRED 1023 ); 1024 $params = array( 1025 'competencyid' => $competencyid, 1026 'parentid' => $parentid 1027 ); 1028 return new external_function_parameters($params); 1029 } 1030 1031 /** 1032 * Move the competency to a new parent. 1033 * 1034 * @param int $competencyid Competency id. 1035 * @param int $parentid Parent id. 1036 * 1037 * @return bool 1038 */ 1039 public static function set_parent_competency($competencyid, $parentid) { 1040 $params = self::validate_parameters(self::set_parent_competency_parameters(), array( 1041 'competencyid' => $competencyid, 1042 'parentid' => $parentid 1043 )); 1044 1045 $competency = api::read_competency($params['competencyid']); 1046 self::validate_context($competency->get_context()); 1047 1048 return api::set_parent_competency($params['competencyid'], $params['parentid']); 1049 } 1050 1051 /** 1052 * Returns description of set_parent_competency() result value. 1053 * 1054 * @return external_description 1055 */ 1056 public static function set_parent_competency_returns() { 1057 return new external_value(PARAM_BOOL, 'True if the update was successful'); 1058 } 1059 1060 /** 1061 * Returns description of move_up_competency() parameters. 1062 * 1063 * @return external_function_parameters 1064 */ 1065 public static function move_up_competency_parameters() { 1066 $competencyid = new external_value( 1067 PARAM_INT, 1068 'The competency id', 1069 VALUE_REQUIRED 1070 ); 1071 $params = array( 1072 'id' => $competencyid, 1073 ); 1074 return new external_function_parameters($params); 1075 } 1076 1077 /** 1078 * Change the sort order of a competency. 1079 * 1080 * @param int $competencyid Competency id. 1081 * @return boolean 1082 */ 1083 public static function move_up_competency($competencyid) { 1084 $params = self::validate_parameters(self::move_up_competency_parameters(), array( 1085 'id' => $competencyid, 1086 )); 1087 1088 $competency = api::read_competency($params['id']); 1089 self::validate_context($competency->get_context()); 1090 1091 return api::move_up_competency($params['id']); 1092 } 1093 1094 /** 1095 * Returns description of move_up_competency() result value. 1096 * 1097 * @return external_description 1098 */ 1099 public static function move_up_competency_returns() { 1100 return new external_value(PARAM_BOOL, 'True if the update was successful'); 1101 } 1102 1103 /** 1104 * Returns description of move_down_competency() parameters. 1105 * 1106 * @return external_function_parameters 1107 */ 1108 public static function move_down_competency_parameters() { 1109 $competencyid = new external_value( 1110 PARAM_INT, 1111 'The competency id', 1112 VALUE_REQUIRED 1113 ); 1114 $params = array( 1115 'id' => $competencyid, 1116 ); 1117 return new external_function_parameters($params); 1118 } 1119 1120 /** 1121 * Change the sort order of a competency. 1122 * 1123 * @param int $competencyid Competency id. 1124 * @return boolean 1125 */ 1126 public static function move_down_competency($competencyid) { 1127 $params = self::validate_parameters(self::move_down_competency_parameters(), array( 1128 'id' => $competencyid, 1129 )); 1130 1131 $competency = api::read_competency($params['id']); 1132 self::validate_context($competency->get_context()); 1133 1134 return api::move_down_competency($params['id']); 1135 } 1136 1137 /** 1138 * Returns description of move_down_competency() result value. 1139 * 1140 * @return external_description 1141 */ 1142 public static function move_down_competency_returns() { 1143 return new external_value(PARAM_BOOL, 'True if the update was successful'); 1144 } 1145 1146 /** 1147 * Returns description of count_courses_using_competency() parameters. 1148 * 1149 * @return external_function_parameters 1150 */ 1151 public static function count_courses_using_competency_parameters() { 1152 $competencyid = new external_value( 1153 PARAM_INT, 1154 'The competency id', 1155 VALUE_REQUIRED 1156 ); 1157 $params = array( 1158 'id' => $competencyid, 1159 ); 1160 return new external_function_parameters($params); 1161 } 1162 1163 /** 1164 * Count the courses (visible to this user) that use this competency. 1165 * 1166 * @param int $competencyid Competency id. 1167 * @return int 1168 */ 1169 public static function count_courses_using_competency($competencyid) { 1170 $params = self::validate_parameters(self::count_courses_using_competency_parameters(), array( 1171 'id' => $competencyid, 1172 )); 1173 1174 $competency = api::read_competency($params['id']); 1175 self::validate_context($competency->get_context()); 1176 1177 return api::count_courses_using_competency($params['id']); 1178 } 1179 1180 /** 1181 * Returns description of count_courses_using_competency() result value. 1182 * 1183 * @return external_description 1184 */ 1185 public static function count_courses_using_competency_returns() { 1186 return new external_value(PARAM_INT, 'The number of courses using this competency'); 1187 } 1188 1189 /** 1190 * Returns description of count_competencies_in_course() parameters. 1191 * 1192 * @return external_function_parameters 1193 */ 1194 public static function count_competencies_in_course_parameters() { 1195 $courseid = new external_value( 1196 PARAM_INT, 1197 'The course id', 1198 VALUE_REQUIRED 1199 ); 1200 $params = array( 1201 'id' => $courseid, 1202 ); 1203 return new external_function_parameters($params); 1204 } 1205 1206 /** 1207 * Count the competencies (visible to this user) in this course. 1208 * 1209 * @param int $courseid The course id to check. 1210 * @return int 1211 */ 1212 public static function count_competencies_in_course($courseid) { 1213 $params = self::validate_parameters(self::count_competencies_in_course_parameters(), array( 1214 'id' => $courseid, 1215 )); 1216 1217 self::validate_context(context_course::instance($params['id'])); 1218 1219 return api::count_competencies_in_course($params['id']); 1220 } 1221 1222 /** 1223 * Returns description of count_competencies_in_course() result value. 1224 * 1225 * @return external_description 1226 */ 1227 public static function count_competencies_in_course_returns() { 1228 return new external_value(PARAM_INT, 'The number of competencies in this course.'); 1229 } 1230 1231 /** 1232 * Returns description of list_course_module_competencies() parameters. 1233 * 1234 * @return external_function_parameters 1235 */ 1236 public static function list_course_module_competencies_parameters() { 1237 $cmid = new external_value( 1238 PARAM_INT, 1239 'The course module id', 1240 VALUE_REQUIRED 1241 ); 1242 $params = array( 1243 'cmid' => $cmid 1244 ); 1245 return new external_function_parameters($params); 1246 } 1247 1248 /** 1249 * List the course modules using this competency (visible to this user) in this course. 1250 * 1251 * @param int $cmid The course module id to check. 1252 * @return array 1253 */ 1254 public static function list_course_module_competencies($cmid) { 1255 global $PAGE; 1256 1257 $params = self::validate_parameters(self::list_course_module_competencies_parameters(), array( 1258 'cmid' => $cmid 1259 )); 1260 1261 $context = context_module::instance($params['cmid']); 1262 self::validate_context($context); 1263 1264 $output = $PAGE->get_renderer('core'); 1265 1266 $apiresult = api::list_course_module_competencies($params['cmid']); 1267 $result = array(); 1268 1269 foreach ($apiresult as $cmrecord) { 1270 $one = new \stdClass(); 1271 $exporter = new competency_exporter($cmrecord['competency'], ['context' => $context]); 1272 $one->competency = $exporter->export($output); 1273 $exporter = new course_module_competency_exporter($cmrecord['coursemodulecompetency'], ['context' => $context]); 1274 $one->coursemodulecompetency = $exporter->export($output); 1275 1276 $result[] = (array) $one; 1277 } 1278 1279 return $result; 1280 } 1281 1282 /** 1283 * Returns description of list_course_module_competencies() result value. 1284 * 1285 * @return external_description 1286 */ 1287 public static function list_course_module_competencies_returns() { 1288 return new external_multiple_structure( 1289 new external_single_structure(array( 1290 'competency' => competency_exporter::get_read_structure(), 1291 'coursemodulecompetency' => course_module_competency_exporter::get_read_structure() 1292 )) 1293 ); 1294 } 1295 1296 /** 1297 * Returns description of list_course_competencies() parameters. 1298 * 1299 * @return external_function_parameters 1300 */ 1301 public static function list_course_competencies_parameters() { 1302 $courseid = new external_value( 1303 PARAM_INT, 1304 'The course id', 1305 VALUE_REQUIRED 1306 ); 1307 $params = array( 1308 'id' => $courseid, 1309 ); 1310 return new external_function_parameters($params); 1311 } 1312 1313 /** 1314 * Returns description of count_course_module_competencies() parameters. 1315 * 1316 * @return external_function_parameters 1317 */ 1318 public static function count_course_module_competencies_parameters() { 1319 $cmid = new external_value( 1320 PARAM_INT, 1321 'The course module id', 1322 VALUE_REQUIRED 1323 ); 1324 $params = array( 1325 'cmid' => $cmid 1326 ); 1327 return new external_function_parameters($params); 1328 } 1329 1330 /** 1331 * List the course modules using this competency (visible to this user) in this course. 1332 * 1333 * @param int $cmid The course module id to check. 1334 * @return array 1335 */ 1336 public static function count_course_module_competencies($cmid) { 1337 $params = self::validate_parameters(self::count_course_module_competencies_parameters(), array( 1338 'cmid' => $cmid 1339 )); 1340 1341 $context = context_module::instance($params['cmid']); 1342 self::validate_context($context); 1343 1344 return api::count_course_module_competencies($params['cmid']); 1345 } 1346 1347 /** 1348 * Returns description of count_course_module_competencies() result value. 1349 * 1350 * @return external_description 1351 */ 1352 public static function count_course_module_competencies_returns() { 1353 return new external_value(PARAM_INT, 'The number of competencies found.'); 1354 } 1355 1356 /** 1357 * List the competencies (visible to this user) in this course. 1358 * 1359 * @param int $courseid The course id to check. 1360 * @return array 1361 */ 1362 public static function list_course_competencies($courseid) { 1363 global $PAGE; 1364 1365 $params = self::validate_parameters(self::list_course_competencies_parameters(), array( 1366 'id' => $courseid, 1367 )); 1368 1369 $coursecontext = context_course::instance($params['id']); 1370 self::validate_context($coursecontext); 1371 1372 $output = $PAGE->get_renderer('core'); 1373 1374 $competencies = api::list_course_competencies($params['id']); 1375 $result = array(); 1376 1377 $contextcache = array(); 1378 $helper = new performance_helper(); 1379 foreach ($competencies as $competency) { 1380 $context = $helper->get_context_from_competency($competency['competency']); 1381 $exporter = new competency_exporter($competency['competency'], array('context' => $context)); 1382 $competencyrecord = $exporter->export($output); 1383 $exporter = new course_competency_exporter($competency['coursecompetency']); 1384 $coursecompetencyrecord = $exporter->export($output); 1385 1386 $result[] = array( 1387 'competency' => $competencyrecord, 1388 'coursecompetency' => $coursecompetencyrecord 1389 ); 1390 } 1391 1392 return $result; 1393 } 1394 1395 /** 1396 * Returns description of list_course_competencies() result value. 1397 * 1398 * @return external_description 1399 */ 1400 public static function list_course_competencies_returns() { 1401 return new external_multiple_structure( 1402 new external_single_structure(array( 1403 'competency' => competency_exporter::get_read_structure(), 1404 'coursecompetency' => course_competency_exporter::get_read_structure() 1405 )) 1406 ); 1407 } 1408 1409 /** 1410 * Returns description of add_competency_to_course() parameters. 1411 * 1412 * @return external_function_parameters 1413 */ 1414 public static function add_competency_to_course_parameters() { 1415 $courseid = new external_value( 1416 PARAM_INT, 1417 'The course id', 1418 VALUE_REQUIRED 1419 ); 1420 $competencyid = new external_value( 1421 PARAM_INT, 1422 'The competency id', 1423 VALUE_REQUIRED 1424 ); 1425 $params = array( 1426 'courseid' => $courseid, 1427 'competencyid' => $competencyid, 1428 ); 1429 return new external_function_parameters($params); 1430 } 1431 1432 /** 1433 * Count the competencies (visible to this user) in this course. 1434 * 1435 * @param int $courseid The course id to check. 1436 * @param int $competencyid Competency id. 1437 * @return int 1438 */ 1439 public static function add_competency_to_course($courseid, $competencyid) { 1440 $params = self::validate_parameters(self::add_competency_to_course_parameters(), array( 1441 'courseid' => $courseid, 1442 'competencyid' => $competencyid, 1443 )); 1444 self::validate_context(context_course::instance($params['courseid'])); 1445 return api::add_competency_to_course($params['courseid'], $params['competencyid']); 1446 } 1447 1448 /** 1449 * Returns description of add_competency_to_course() result value. 1450 * 1451 * @return external_description 1452 */ 1453 public static function add_competency_to_course_returns() { 1454 return new external_value(PARAM_BOOL, 'True if successful.'); 1455 } 1456 1457 /** 1458 * Returns description of remove_competency_from_course() parameters. 1459 * 1460 * @return external_function_parameters 1461 */ 1462 public static function remove_competency_from_course_parameters() { 1463 $courseid = new external_value( 1464 PARAM_INT, 1465 'The course id', 1466 VALUE_REQUIRED 1467 ); 1468 $competencyid = new external_value( 1469 PARAM_INT, 1470 'The competency id', 1471 VALUE_REQUIRED 1472 ); 1473 $params = array( 1474 'courseid' => $courseid, 1475 'competencyid' => $competencyid, 1476 ); 1477 return new external_function_parameters($params); 1478 } 1479 1480 /** 1481 * Count the competencies (visible to this user) in this course. 1482 * 1483 * @param int $courseid The course id to check. 1484 * @param int $competencyid Competency id. 1485 * @return int 1486 */ 1487 public static function remove_competency_from_course($courseid, $competencyid) { 1488 $params = self::validate_parameters(self::remove_competency_from_course_parameters(), array( 1489 'courseid' => $courseid, 1490 'competencyid' => $competencyid, 1491 )); 1492 self::validate_context(context_course::instance($params['courseid'])); 1493 return api::remove_competency_from_course($params['courseid'], $params['competencyid']); 1494 } 1495 1496 /** 1497 * Returns description of remove_competency_from_course() result value. 1498 * 1499 * @return external_description 1500 */ 1501 public static function remove_competency_from_course_returns() { 1502 return new external_value(PARAM_BOOL, 'True if successful.'); 1503 } 1504 1505 /** 1506 * Returns description of reorder_course_competency() parameters. 1507 * 1508 * @return external_function_parameters 1509 */ 1510 public static function reorder_course_competency_parameters() { 1511 $courseid = new external_value( 1512 PARAM_INT, 1513 'The course id', 1514 VALUE_REQUIRED 1515 ); 1516 $competencyidfrom = new external_value( 1517 PARAM_INT, 1518 'The competency id we are moving', 1519 VALUE_REQUIRED 1520 ); 1521 $competencyidto = new external_value( 1522 PARAM_INT, 1523 'The competency id we are moving to', 1524 VALUE_REQUIRED 1525 ); 1526 $params = array( 1527 'courseid' => $courseid, 1528 'competencyidfrom' => $competencyidfrom, 1529 'competencyidto' => $competencyidto, 1530 ); 1531 return new external_function_parameters($params); 1532 } 1533 1534 /** 1535 * Change the order of course competencies. 1536 * 1537 * @param int $courseid The course id 1538 * @param int $competencyidfrom The competency to move. 1539 * @param int $competencyidto The competency to move to. 1540 * @return bool 1541 */ 1542 public static function reorder_course_competency($courseid, $competencyidfrom, $competencyidto) { 1543 $params = self::validate_parameters(self::reorder_course_competency_parameters(), array( 1544 'courseid' => $courseid, 1545 'competencyidfrom' => $competencyidfrom, 1546 'competencyidto' => $competencyidto, 1547 )); 1548 self::validate_context(context_course::instance($params['courseid'])); 1549 return api::reorder_course_competency($params['courseid'], $params['competencyidfrom'], $params['competencyidto']); 1550 } 1551 1552 /** 1553 * Returns description of reorder_course_competency() result value. 1554 * 1555 * @return external_description 1556 */ 1557 public static function reorder_course_competency_returns() { 1558 return new external_value(PARAM_BOOL, 'True if successful.'); 1559 } 1560 1561 /** 1562 * Returns description of reorder_template_competency() parameters. 1563 * 1564 * @return external_function_parameters 1565 */ 1566 public static function reorder_template_competency_parameters() { 1567 $templateid = new external_value( 1568 PARAM_INT, 1569 'The template id', 1570 VALUE_REQUIRED 1571 ); 1572 $competencyidfrom = new external_value( 1573 PARAM_INT, 1574 'The competency id we are moving', 1575 VALUE_REQUIRED 1576 ); 1577 $competencyidto = new external_value( 1578 PARAM_INT, 1579 'The competency id we are moving to', 1580 VALUE_REQUIRED 1581 ); 1582 $params = array( 1583 'templateid' => $templateid, 1584 'competencyidfrom' => $competencyidfrom, 1585 'competencyidto' => $competencyidto, 1586 ); 1587 return new external_function_parameters($params); 1588 } 1589 1590 /** 1591 * Change the order of template competencies. 1592 * 1593 * @param int $templateid The template id 1594 * @param int $competencyidfrom The competency to move. 1595 * @param int $competencyidto The competency to move to. 1596 * @return bool 1597 */ 1598 public static function reorder_template_competency($templateid, $competencyidfrom, $competencyidto) { 1599 $params = self::validate_parameters(self::reorder_template_competency_parameters(), array( 1600 'templateid' => $templateid, 1601 'competencyidfrom' => $competencyidfrom, 1602 'competencyidto' => $competencyidto, 1603 )); 1604 1605 $template = api::read_template($params['templateid']); 1606 self::validate_context($template->get_context()); 1607 1608 return api::reorder_template_competency($params['templateid'], $params['competencyidfrom'], $params['competencyidto']); 1609 } 1610 1611 /** 1612 * Returns description of reorder_template_competency() result value. 1613 * 1614 * @return external_description 1615 */ 1616 public static function reorder_template_competency_returns() { 1617 return new external_value(PARAM_BOOL, 'True if successful.'); 1618 } 1619 1620 /** 1621 * Returns description of create_template() parameters. 1622 * 1623 * @return external_function_parameters 1624 */ 1625 public static function create_template_parameters() { 1626 $structure = template_exporter::get_create_structure(); 1627 $params = array('template' => $structure); 1628 return new external_function_parameters($params); 1629 } 1630 1631 /** 1632 * Create a new learning plan template 1633 * 1634 * @param array $template The list of fields for the template. 1635 * @return \stdClass Record of new template. 1636 */ 1637 public static function create_template($template) { 1638 global $PAGE; 1639 1640 $params = self::validate_parameters(self::create_template_parameters(), array('template' => $template)); 1641 $params = $params['template']; 1642 $context = self::get_context_from_params($params); 1643 self::validate_context($context); 1644 $output = $PAGE->get_renderer('core'); 1645 1646 unset($params['contextlevel']); 1647 unset($params['instanceid']); 1648 $params = (object) $params; 1649 $params->contextid = $context->id; 1650 1651 $result = api::create_template($params); 1652 $exporter = new template_exporter($result); 1653 $record = $exporter->export($output); 1654 return $record; 1655 } 1656 1657 /** 1658 * Returns description of create_template() result value. 1659 * 1660 * @return external_description 1661 */ 1662 public static function create_template_returns() { 1663 return template_exporter::get_read_structure(); 1664 } 1665 1666 /** 1667 * Returns description of read_template() parameters. 1668 * 1669 * @return external_function_parameters 1670 */ 1671 public static function read_template_parameters() { 1672 $id = new external_value( 1673 PARAM_INT, 1674 'Data base record id for the template', 1675 VALUE_REQUIRED 1676 ); 1677 1678 $params = array( 1679 'id' => $id, 1680 ); 1681 return new external_function_parameters($params); 1682 } 1683 1684 /** 1685 * Read a learning plan template by id. 1686 * 1687 * @param int $id The id of the template. 1688 * @return \stdClass 1689 */ 1690 public static function read_template($id) { 1691 global $PAGE; 1692 1693 $params = self::validate_parameters(self::read_template_parameters(), array('id' => $id)); 1694 $template = api::read_template($params['id']); 1695 self::validate_context($template->get_context()); 1696 $output = $PAGE->get_renderer('core'); 1697 1698 $exporter = new template_exporter($template); 1699 $record = $exporter->export($output); 1700 return $record; 1701 } 1702 1703 /** 1704 * Returns description of read_template() result value. 1705 * 1706 * @return external_description 1707 */ 1708 public static function read_template_returns() { 1709 return template_exporter::get_read_structure(); 1710 } 1711 1712 /** 1713 * Returns description of delete_template() parameters. 1714 * 1715 * @return external_function_parameters 1716 */ 1717 public static function delete_template_parameters() { 1718 $id = new external_value( 1719 PARAM_INT, 1720 'Data base record id for the template', 1721 VALUE_REQUIRED 1722 ); 1723 1724 $deleteplans = new external_value( 1725 PARAM_BOOL, 1726 'Boolean to indicate if plans must be deleted', 1727 VALUE_REQUIRED 1728 ); 1729 1730 $params = array( 1731 'id' => $id, 1732 'deleteplans' => $deleteplans 1733 ); 1734 return new external_function_parameters($params); 1735 } 1736 1737 /** 1738 * Delete a learning plan template 1739 * 1740 * @param int $id The learning plan template id 1741 * @param boolean $deleteplans True to delete the plans associated to template or false to unlink them 1742 * @return boolean 1743 */ 1744 public static function delete_template($id, $deleteplans = true) { 1745 $params = self::validate_parameters(self::delete_template_parameters(), array( 1746 'id' => $id, 1747 'deleteplans' => $deleteplans, 1748 )); 1749 1750 $template = api::read_template($params['id']); 1751 self::validate_context($template->get_context()); 1752 1753 return api::delete_template($params['id'], $params['deleteplans']); 1754 } 1755 1756 /** 1757 * Returns description of delete_template() result value. 1758 * 1759 * @return external_description 1760 */ 1761 public static function delete_template_returns() { 1762 return new external_value(PARAM_BOOL, 'True if the delete was successful'); 1763 } 1764 1765 /** 1766 * Returns description of update_template() parameters. 1767 * 1768 * @return external_function_parameters 1769 */ 1770 public static function update_template_parameters() { 1771 $structure = template_exporter::get_update_structure(); 1772 $params = array('template' => $structure); 1773 return new external_function_parameters($params); 1774 } 1775 1776 /** 1777 * Update an existing learning plan template 1778 * 1779 * @param array $template The list of fields for the template. 1780 * @return boolean 1781 */ 1782 public static function update_template($template) { 1783 1784 $params = self::validate_parameters(self::update_template_parameters(), array('template' => $template)); 1785 $params = $params['template']; 1786 $template = api::read_template($params['id']); 1787 self::validate_context($template->get_context()); 1788 1789 $params = (object) $params; 1790 1791 return api::update_template($params); 1792 } 1793 1794 /** 1795 * Returns description of update_template() result value. 1796 * 1797 * @return external_description 1798 */ 1799 public static function update_template_returns() { 1800 return new external_value(PARAM_BOOL, 'True if the update was successful'); 1801 } 1802 1803 /** 1804 * Returns description of duplicate_template() parameters. 1805 * 1806 * @return external_function_parameters 1807 */ 1808 public static function duplicate_template_parameters() { 1809 $templateid = new external_value( 1810 PARAM_INT, 1811 'The template id', 1812 VALUE_REQUIRED 1813 ); 1814 1815 $params = array( 1816 'id' => $templateid 1817 ); 1818 return new external_function_parameters($params); 1819 } 1820 1821 /** 1822 * Duplicate a learning plan template. 1823 * 1824 * @param int $id the id of the learning plan template to duplicate 1825 * @return boolean Record of new template. 1826 */ 1827 public static function duplicate_template($id) { 1828 global $PAGE; 1829 1830 $params = self::validate_parameters(self::duplicate_template_parameters(), array('id' => $id)); 1831 1832 $template = api::read_template($params['id']); 1833 self::validate_context($template->get_context()); 1834 $output = $PAGE->get_renderer('core'); 1835 1836 $result = api::duplicate_template($params['id']); 1837 $exporter = new template_exporter($result); 1838 return $exporter->export($output); 1839 } 1840 1841 /** 1842 * Returns description of duplicate_template() result value. 1843 * 1844 * @return external_description 1845 */ 1846 public static function duplicate_template_returns() { 1847 return template_exporter::get_read_structure(); 1848 } 1849 1850 /** 1851 * Returns description of list_templates() parameters. 1852 * 1853 * @return external_function_parameters 1854 */ 1855 public static function list_templates_parameters() { 1856 $sort = new external_value( 1857 PARAM_ALPHANUMEXT, 1858 'Column to sort by.', 1859 VALUE_DEFAULT, 1860 '' 1861 ); 1862 $order = new external_value( 1863 PARAM_ALPHA, 1864 'Sort direction. Should be either ASC or DESC', 1865 VALUE_DEFAULT, 1866 '' 1867 ); 1868 $skip = new external_value( 1869 PARAM_INT, 1870 'Skip this number of records before returning results', 1871 VALUE_DEFAULT, 1872 0 1873 ); 1874 $limit = new external_value( 1875 PARAM_INT, 1876 'Return this number of records at most.', 1877 VALUE_DEFAULT, 1878 0 1879 ); 1880 $includes = new external_value( 1881 PARAM_ALPHA, 1882 'What other contexts to fetch the templates from. (children, parents, self)', 1883 VALUE_DEFAULT, 1884 'children' 1885 ); 1886 $onlyvisible = new external_value( 1887 PARAM_BOOL, 1888 'If should list only visible templates', 1889 VALUE_DEFAULT, 1890 false 1891 ); 1892 1893 $params = array( 1894 'sort' => $sort, 1895 'order' => $order, 1896 'skip' => $skip, 1897 'limit' => $limit, 1898 'context' => self::get_context_parameters(), 1899 'includes' => $includes, 1900 'onlyvisible' => $onlyvisible 1901 ); 1902 return new external_function_parameters($params); 1903 } 1904 1905 /** 1906 * List the existing learning plan templates 1907 * 1908 * @param string $sort Field to sort by. 1909 * @param string $order Sort order. 1910 * @param int $skip Limitstart. 1911 * @param int $limit Number of rows to return. 1912 * @param array $context 1913 * @param bool $includes 1914 * @param bool $onlyvisible 1915 * 1916 * @return array 1917 */ 1918 public static function list_templates($sort, $order, $skip, $limit, $context, $includes, $onlyvisible) { 1919 global $PAGE; 1920 1921 $params = self::validate_parameters(self::list_templates_parameters(), array( 1922 'sort' => $sort, 1923 'order' => $order, 1924 'skip' => $skip, 1925 'limit' => $limit, 1926 'context' => $context, 1927 'includes' => $includes, 1928 'onlyvisible' => $onlyvisible 1929 )); 1930 1931 $context = self::get_context_from_params($params['context']); 1932 self::validate_context($context); 1933 $output = $PAGE->get_renderer('core'); 1934 1935 if ($params['order'] !== '' && $params['order'] !== 'ASC' && $params['order'] !== 'DESC') { 1936 throw new invalid_parameter_exception('Invalid order param. Must be ASC, DESC or empty.'); 1937 } 1938 1939 $results = api::list_templates($params['sort'], 1940 $params['order'], 1941 $params['skip'], 1942 $params['limit'], 1943 $context, 1944 $params['includes'], 1945 $params['onlyvisible']); 1946 $records = array(); 1947 foreach ($results as $result) { 1948 $exporter = new template_exporter($result); 1949 $record = $exporter->export($output); 1950 array_push($records, $record); 1951 } 1952 return $records; 1953 } 1954 1955 /** 1956 * Returns description of list_templates() result value. 1957 * 1958 * @return external_description 1959 */ 1960 public static function list_templates_returns() { 1961 return new external_multiple_structure(template_exporter::get_read_structure()); 1962 } 1963 1964 /** 1965 * Returns description of count_templates() parameters. 1966 * 1967 * @return external_function_parameters 1968 */ 1969 public static function count_templates_parameters() { 1970 $includes = new external_value( 1971 PARAM_ALPHA, 1972 'What other contextes to fetch the frameworks from. (children, parents, self)', 1973 VALUE_DEFAULT, 1974 'children' 1975 ); 1976 1977 $params = array( 1978 'context' => self::get_context_parameters(), 1979 'includes' => $includes 1980 ); 1981 return new external_function_parameters($params); 1982 } 1983 1984 /** 1985 * Count the existing learning plan templates 1986 * 1987 * @param array $context 1988 * @param string $includes 1989 * @return int 1990 */ 1991 public static function count_templates($context, $includes) { 1992 $params = self::validate_parameters(self::count_templates_parameters(), array( 1993 'context' => $context, 1994 'includes' => $includes 1995 )); 1996 $context = self::get_context_from_params($params['context']); 1997 self::validate_context($context); 1998 1999 return api::count_templates($context, $includes); 2000 } 2001 2002 /** 2003 * Returns description of count_templates() result value. 2004 * 2005 * @return external_description 2006 */ 2007 public static function count_templates_returns() { 2008 return new external_value(PARAM_INT, 'The number of learning plan templates found.'); 2009 } 2010 2011 /** 2012 * Returns description of count_templates_using_competency() parameters. 2013 * 2014 * @return external_function_parameters 2015 */ 2016 public static function count_templates_using_competency_parameters() { 2017 $competencyid = new external_value( 2018 PARAM_INT, 2019 'The competency id', 2020 VALUE_REQUIRED 2021 ); 2022 $params = array( 2023 'id' => $competencyid, 2024 ); 2025 return new external_function_parameters($params); 2026 } 2027 2028 /** 2029 * Count the learning plan templates (visible to this user) that use this competency. 2030 * 2031 * @param int $competencyid Competency id. 2032 * @return int 2033 */ 2034 public static function count_templates_using_competency($competencyid) { 2035 $params = self::validate_parameters(self::count_templates_using_competency_parameters(), array( 2036 'id' => $competencyid, 2037 )); 2038 2039 $competency = api::read_competency($params['id']); 2040 self::validate_context($competency->get_context()); 2041 2042 return api::count_templates_using_competency($params['id']); 2043 } 2044 2045 /** 2046 * Returns description of count_templates_using_competency() result value. 2047 * 2048 * @return external_description 2049 */ 2050 public static function count_templates_using_competency_returns() { 2051 return new external_value(PARAM_INT, 'The number of learning plan templates using this competency'); 2052 } 2053 2054 /** 2055 * Returns description of list_templates_using_competency() parameters. 2056 * 2057 * @return external_function_parameters 2058 */ 2059 public static function list_templates_using_competency_parameters() { 2060 $competencyid = new external_value( 2061 PARAM_INT, 2062 'The competency id', 2063 VALUE_REQUIRED 2064 ); 2065 $params = array( 2066 'id' => $competencyid, 2067 ); 2068 return new external_function_parameters($params); 2069 } 2070 2071 /** 2072 * List the learning plan templates (visible to this user) that use this competency. 2073 * 2074 * @param int $competencyid Competency id. 2075 * @return array 2076 */ 2077 public static function list_templates_using_competency($competencyid) { 2078 global $PAGE; 2079 2080 $params = self::validate_parameters(self::list_templates_using_competency_parameters(), array( 2081 'id' => $competencyid, 2082 )); 2083 2084 $competency = api::read_competency($params['id']); 2085 self::validate_context($competency->get_context()); 2086 $output = $PAGE->get_renderer('core'); 2087 2088 $templates = api::list_templates_using_competency($params['id']); 2089 $records = array(); 2090 2091 foreach ($templates as $template) { 2092 $exporter = new template_exporter($template); 2093 $record = $exporter->export($output); 2094 $records[] = $record; 2095 } 2096 2097 return $records; 2098 } 2099 2100 /** 2101 * Returns description of list_templates_using_competency() result value. 2102 * 2103 * @return external_description 2104 */ 2105 public static function list_templates_using_competency_returns() { 2106 return new external_multiple_structure(template_exporter::get_read_structure()); 2107 } 2108 2109 /** 2110 * Returns description of count_competencies_in_template() parameters. 2111 * 2112 * @return external_function_parameters 2113 */ 2114 public static function count_competencies_in_template_parameters() { 2115 $templateid = new external_value( 2116 PARAM_INT, 2117 'The template id', 2118 VALUE_REQUIRED 2119 ); 2120 $params = array( 2121 'id' => $templateid, 2122 ); 2123 return new external_function_parameters($params); 2124 } 2125 2126 /** 2127 * Count the competencies (visible to this user) in this learning plan template. 2128 * 2129 * @param int $templateid The template id to check 2130 * @return int 2131 */ 2132 public static function count_competencies_in_template($templateid) { 2133 $params = self::validate_parameters(self::count_competencies_in_template_parameters(), array( 2134 'id' => $templateid, 2135 )); 2136 $template = api::read_template($params['id']); 2137 self::validate_context($template->get_context()); 2138 2139 return api::count_competencies_in_template($params['id']); 2140 } 2141 2142 /** 2143 * Returns description of count_competencies_in_template() result value. 2144 * 2145 * @return external_description 2146 */ 2147 public static function count_competencies_in_template_returns() { 2148 return new external_value(PARAM_INT, 'The number of competencies in this learning plan template.'); 2149 } 2150 2151 /** 2152 * Returns description of list_competencies_in_template() parameters. 2153 * 2154 * @return external_function_parameters 2155 */ 2156 public static function list_competencies_in_template_parameters() { 2157 $templateid = new external_value( 2158 PARAM_INT, 2159 'The template id', 2160 VALUE_REQUIRED 2161 ); 2162 $params = array( 2163 'id' => $templateid, 2164 ); 2165 return new external_function_parameters($params); 2166 } 2167 2168 /** 2169 * List the competencies (visible to this user) in this learning plan template. 2170 * 2171 * @param int $templateid Template id. 2172 * @return array 2173 */ 2174 public static function list_competencies_in_template($templateid) { 2175 global $PAGE; 2176 2177 $params = self::validate_parameters(self::list_competencies_in_template_parameters(), array( 2178 'id' => $templateid, 2179 )); 2180 2181 $template = api::read_template($params['id']); 2182 self::validate_context($template->get_context()); 2183 $output = $PAGE->get_renderer('core'); 2184 2185 $competencies = api::list_competencies_in_template($params['id']); 2186 $results = array(); 2187 2188 $helper = new performance_helper(); 2189 foreach ($competencies as $competency) { 2190 $context = $helper->get_context_from_competency($competency); 2191 $exporter = new competency_exporter($competency, array('context' => $context)); 2192 $record = $exporter->export($output); 2193 array_push($results, $record); 2194 } 2195 return $results; 2196 } 2197 2198 /** 2199 * Returns description of list_competencies_in_template() result value. 2200 * 2201 * @return external_description 2202 */ 2203 public static function list_competencies_in_template_returns() { 2204 return new external_multiple_structure(competency_exporter::get_read_structure()); 2205 } 2206 2207 /** 2208 * Returns description of add_competency_to_template() parameters. 2209 * 2210 * @return external_function_parameters 2211 */ 2212 public static function add_competency_to_template_parameters() { 2213 $templateid = new external_value( 2214 PARAM_INT, 2215 'The template id', 2216 VALUE_REQUIRED 2217 ); 2218 $competencyid = new external_value( 2219 PARAM_INT, 2220 'The competency id', 2221 VALUE_REQUIRED 2222 ); 2223 $params = array( 2224 'templateid' => $templateid, 2225 'competencyid' => $competencyid, 2226 ); 2227 return new external_function_parameters($params); 2228 } 2229 2230 /** 2231 * Count the competencies (visible to this user) in this template. 2232 * 2233 * @param int $templateid Template id. 2234 * @param int $competencyid Competency id. 2235 * @return int 2236 */ 2237 public static function add_competency_to_template($templateid, $competencyid) { 2238 global $PAGE; 2239 $params = self::validate_parameters(self::add_competency_to_template_parameters(), array( 2240 'templateid' => $templateid, 2241 'competencyid' => $competencyid, 2242 )); 2243 2244 $template = api::read_template($params['templateid']); 2245 self::validate_context($template->get_context()); 2246 2247 return api::add_competency_to_template($params['templateid'], $params['competencyid']); 2248 } 2249 2250 /** 2251 * Returns description of add_competency_to_template() result value. 2252 * 2253 * @return external_description 2254 */ 2255 public static function add_competency_to_template_returns() { 2256 return new external_value(PARAM_BOOL, 'True if successful.'); 2257 } 2258 2259 /** 2260 * Returns description of add_competency_to_plan() parameters. 2261 * 2262 * @return external_function_parameters 2263 */ 2264 public static function add_competency_to_plan_parameters() { 2265 $planid = new external_value( 2266 PARAM_INT, 2267 'The plan id', 2268 VALUE_REQUIRED 2269 ); 2270 $competencyid = new external_value( 2271 PARAM_INT, 2272 'The competency id', 2273 VALUE_REQUIRED 2274 ); 2275 $params = array( 2276 'planid' => $planid, 2277 'competencyid' => $competencyid, 2278 ); 2279 return new external_function_parameters($params); 2280 } 2281 2282 /** 2283 * add competency to a learning plan. 2284 * 2285 * @param int $planid Plan id. 2286 * @param int $competencyid Competency id. 2287 * @return int 2288 */ 2289 public static function add_competency_to_plan($planid, $competencyid) { 2290 $params = self::validate_parameters(self::add_competency_to_plan_parameters(), array( 2291 'planid' => $planid, 2292 'competencyid' => $competencyid, 2293 )); 2294 2295 $plan = api::read_plan($params['planid']); 2296 self::validate_context($plan->get_context()); 2297 2298 return api::add_competency_to_plan($params['planid'], $params['competencyid']); 2299 } 2300 2301 /** 2302 * Returns description of add_competency_to_plan() result value. 2303 * 2304 * @return external_description 2305 */ 2306 public static function add_competency_to_plan_returns() { 2307 return new external_value(PARAM_BOOL, 'True if successful.'); 2308 } 2309 2310 /** 2311 * Returns description of remove_competency_from_plan() parameters. 2312 * 2313 * @return external_function_parameters 2314 */ 2315 public static function remove_competency_from_plan_parameters() { 2316 $planid = new external_value( 2317 PARAM_INT, 2318 'The plan id', 2319 VALUE_REQUIRED 2320 ); 2321 $competencyid = new external_value( 2322 PARAM_INT, 2323 'The competency id', 2324 VALUE_REQUIRED 2325 ); 2326 $params = array( 2327 'planid' => $planid, 2328 'competencyid' => $competencyid, 2329 ); 2330 return new external_function_parameters($params); 2331 } 2332 2333 /** 2334 * Remove a competency from plan. 2335 * 2336 * @param int $planid Plan id. 2337 * @param int $competencyid Competency id. 2338 * @return int 2339 */ 2340 public static function remove_competency_from_plan($planid, $competencyid) { 2341 $params = self::validate_parameters(self::remove_competency_from_plan_parameters(), array( 2342 'planid' => $planid, 2343 'competencyid' => $competencyid, 2344 )); 2345 $plan = api::read_plan($params['planid']); 2346 self::validate_context($plan->get_context()); 2347 2348 return api::remove_competency_from_plan($params['planid'], $params['competencyid']); 2349 } 2350 2351 /** 2352 * Returns description of remove_competency_from_plan() result value. 2353 * 2354 * @return external_description 2355 */ 2356 public static function remove_competency_from_plan_returns() { 2357 return new external_value(PARAM_BOOL, 'True if successful.'); 2358 } 2359 2360 /** 2361 * Returns description of remove_competency_from_template() parameters. 2362 * 2363 * @return external_function_parameters 2364 */ 2365 public static function remove_competency_from_template_parameters() { 2366 $templateid = new external_value( 2367 PARAM_INT, 2368 'The template id', 2369 VALUE_REQUIRED 2370 ); 2371 $competencyid = new external_value( 2372 PARAM_INT, 2373 'The competency id', 2374 VALUE_REQUIRED 2375 ); 2376 $params = array( 2377 'templateid' => $templateid, 2378 'competencyid' => $competencyid, 2379 ); 2380 return new external_function_parameters($params); 2381 } 2382 2383 /** 2384 * Returns description of reorder_plan_competency() parameters. 2385 * 2386 * @return external_function_parameters 2387 */ 2388 public static function reorder_plan_competency_parameters() { 2389 $planid = new external_value( 2390 PARAM_INT, 2391 'The plan id', 2392 VALUE_REQUIRED 2393 ); 2394 $competencyidfrom = new external_value( 2395 PARAM_INT, 2396 'The competency id we are moving', 2397 VALUE_REQUIRED 2398 ); 2399 $competencyidto = new external_value( 2400 PARAM_INT, 2401 'The competency id we are moving to', 2402 VALUE_REQUIRED 2403 ); 2404 $params = array( 2405 'planid' => $planid, 2406 'competencyidfrom' => $competencyidfrom, 2407 'competencyidto' => $competencyidto, 2408 ); 2409 return new external_function_parameters($params); 2410 } 2411 2412 /** 2413 * Change the order of plan competencies. 2414 * 2415 * @param int $planid The plan id 2416 * @param int $competencyidfrom The competency to move. 2417 * @param int $competencyidto The competency to move to. 2418 * @return bool 2419 */ 2420 public static function reorder_plan_competency($planid, $competencyidfrom, $competencyidto) { 2421 $params = self::validate_parameters(self::reorder_plan_competency_parameters(), array( 2422 'planid' => $planid, 2423 'competencyidfrom' => $competencyidfrom, 2424 'competencyidto' => $competencyidto, 2425 )); 2426 2427 $plan = api::read_plan($params['planid']); 2428 self::validate_context($plan->get_context()); 2429 2430 return api::reorder_plan_competency($params['planid'], $params['competencyidfrom'], $params['competencyidto']); 2431 } 2432 2433 /** 2434 * Returns description of reorder_plan_competency() result value. 2435 * 2436 * @return external_description 2437 */ 2438 public static function reorder_plan_competency_returns() { 2439 return new external_value(PARAM_BOOL, 'True if successful.'); 2440 } 2441 2442 /** 2443 * Returns description of external function parameters. 2444 * 2445 * @return external_function_parameters 2446 */ 2447 public static function user_competency_cancel_review_request_parameters() { 2448 return new external_function_parameters(array( 2449 'userid' => new external_value(PARAM_INT, 'The user ID'), 2450 'competencyid' => new external_value(PARAM_INT, 'The competency ID'), 2451 )); 2452 } 2453 2454 /** 2455 * External function user_competency_cancel_review_request. 2456 * 2457 * @param int $userid The user ID. 2458 * @param int $competencyid The competency ID. 2459 * @return boolean 2460 */ 2461 public static function user_competency_cancel_review_request($userid, $competencyid) { 2462 $params = self::validate_parameters(self::user_competency_cancel_review_request_parameters(), array( 2463 'userid' => $userid, 2464 'competencyid' => $competencyid 2465 )); 2466 2467 $context = context_user::instance($params['userid']); 2468 self::validate_context($context); 2469 2470 return api::user_competency_cancel_review_request($userid, $competencyid); 2471 } 2472 2473 /** 2474 * Returns description of external function result value. 2475 * 2476 * @return external_function_parameters 2477 */ 2478 public static function user_competency_cancel_review_request_returns() { 2479 return new external_value(PARAM_BOOL, 'The success'); 2480 } 2481 2482 /** 2483 * Returns description of external function parameters. 2484 * 2485 * @return external_function_parameters 2486 */ 2487 public static function user_competency_request_review_parameters() { 2488 return new external_function_parameters(array( 2489 'userid' => new external_value(PARAM_INT, 'The user ID'), 2490 'competencyid' => new external_value(PARAM_INT, 'The competency ID'), 2491 )); 2492 } 2493 2494 /** 2495 * External function user_competency_request_review. 2496 * 2497 * @param int $userid The user ID. 2498 * @param int $competencyid The competency ID. 2499 * @return boolean 2500 */ 2501 public static function user_competency_request_review($userid, $competencyid) { 2502 $params = self::validate_parameters(self::user_competency_request_review_parameters(), array( 2503 'userid' => $userid, 2504 'competencyid' => $competencyid, 2505 )); 2506 2507 $context = context_user::instance($params['userid']); 2508 self::validate_context($context); 2509 2510 return api::user_competency_request_review($userid, $competencyid); 2511 } 2512 2513 /** 2514 * Returns description of external function result value. 2515 * 2516 * @return external_function_parameters 2517 */ 2518 public static function user_competency_request_review_returns() { 2519 return new external_value(PARAM_BOOL, 'The success'); 2520 } 2521 2522 /** 2523 * Returns description of external function parameters. 2524 * 2525 * @return external_function_parameters 2526 */ 2527 public static function user_competency_start_review_parameters() { 2528 return new external_function_parameters(array( 2529 'userid' => new external_value(PARAM_INT, 'The user ID'), 2530 'competencyid' => new external_value(PARAM_INT, 'The competency ID'), 2531 )); 2532 } 2533 2534 /** 2535 * External function user_competency_start_review. 2536 * 2537 * @param int $userid The user ID. 2538 * @param int $competencyid The competency ID. 2539 * @return boolean 2540 */ 2541 public static function user_competency_start_review($userid, $competencyid) { 2542 $params = self::validate_parameters(self::user_competency_start_review_parameters(), array( 2543 'userid' => $userid, 2544 'competencyid' => $competencyid 2545 )); 2546 2547 $context = context_user::instance($params['userid']); 2548 self::validate_context($context); 2549 2550 return api::user_competency_start_review($userid, $competencyid); 2551 } 2552 2553 /** 2554 * Returns description of external function result value. 2555 * 2556 * @return external_function_parameters 2557 */ 2558 public static function user_competency_start_review_returns() { 2559 return new external_value(PARAM_BOOL, 'The success'); 2560 } 2561 2562 /** 2563 * Returns description of external function parameters. 2564 * 2565 * @return external_function_parameters 2566 */ 2567 public static function user_competency_stop_review_parameters() { 2568 return new external_function_parameters(array( 2569 'userid' => new external_value(PARAM_INT, 'The user ID'), 2570 'competencyid' => new external_value(PARAM_INT, 'The competency ID'), 2571 )); 2572 } 2573 2574 /** 2575 * External function user_competency_stop_review. 2576 * 2577 * @param int $userid The user ID. 2578 * @param int $competencyid The competency ID. 2579 * @return boolean 2580 */ 2581 public static function user_competency_stop_review($userid, $competencyid) { 2582 $params = self::validate_parameters(self::user_competency_stop_review_parameters(), array( 2583 'userid' => $userid, 2584 'competencyid' => $competencyid 2585 )); 2586 2587 $context = context_user::instance($params['userid']); 2588 self::validate_context($context); 2589 2590 return api::user_competency_stop_review($userid, $competencyid); 2591 } 2592 2593 /** 2594 * Returns description of external function result value. 2595 * 2596 * @return external_function_parameters 2597 */ 2598 public static function user_competency_stop_review_returns() { 2599 return new external_value(PARAM_BOOL, 'The success'); 2600 } 2601 2602 /** 2603 * Returns description of template_has_related_data() parameters. 2604 * 2605 * @return external_function_parameters 2606 */ 2607 public static function template_has_related_data_parameters() { 2608 $templateid = new external_value( 2609 PARAM_INT, 2610 'The template id', 2611 VALUE_REQUIRED 2612 ); 2613 $params = array( 2614 'id' => $templateid, 2615 ); 2616 return new external_function_parameters($params); 2617 } 2618 2619 /** 2620 * Check if template has related data. 2621 * 2622 * @param int $templateid Template id. 2623 * @return boolean 2624 */ 2625 public static function template_has_related_data($templateid) { 2626 $params = self::validate_parameters(self::template_has_related_data_parameters(), array( 2627 'id' => $templateid, 2628 )); 2629 2630 $template = api::read_template($params['id']); 2631 self::validate_context($template->get_context()); 2632 2633 return api::template_has_related_data($params['id']); 2634 } 2635 2636 /** 2637 * Returns description of template_has_related_data() result value. 2638 * 2639 * @return external_description 2640 */ 2641 public static function template_has_related_data_returns() { 2642 return new external_value(PARAM_BOOL, 'True if the template has related data'); 2643 } 2644 2645 /** 2646 * Count the competencies (visible to this user) in this learning plan template. 2647 * 2648 * @param int $templateid Template id. 2649 * @param int $competencyid Competency id. 2650 * @return int 2651 */ 2652 public static function remove_competency_from_template($templateid, $competencyid) { 2653 $params = self::validate_parameters(self::remove_competency_from_template_parameters(), array( 2654 'templateid' => $templateid, 2655 'competencyid' => $competencyid, 2656 )); 2657 $template = api::read_template($params['templateid']); 2658 self::validate_context($template->get_context()); 2659 2660 return api::remove_competency_from_template($params['templateid'], $params['competencyid']); 2661 } 2662 2663 /** 2664 * Returns description of remove_competency_from_template() result value. 2665 * 2666 * @return external_description 2667 */ 2668 public static function remove_competency_from_template_returns() { 2669 return new external_value(PARAM_BOOL, 'True if successful.'); 2670 } 2671 2672 /** 2673 * Returns description of create_plan() parameters. 2674 * 2675 * @return external_function_parameters 2676 */ 2677 public static function create_plan_parameters() { 2678 $structure = plan_exporter::get_create_structure(); 2679 $params = array('plan' => $structure); 2680 return new external_function_parameters($params); 2681 } 2682 2683 /** 2684 * Create a new learning plan. 2685 * 2686 * @param array $plan List of fields for the plan. 2687 * @return array New plan record. 2688 */ 2689 public static function create_plan($plan) { 2690 global $PAGE; 2691 2692 $params = self::validate_parameters(self::create_plan_parameters(), array('plan' => $plan)); 2693 $params = $params['plan']; 2694 2695 $context = context_user::instance($params['userid']); 2696 self::validate_context($context); 2697 $output = $PAGE->get_renderer('core'); 2698 2699 $params = (object) $params; 2700 2701 $result = api::create_plan($params); 2702 $exporter = new plan_exporter($result, array('template' => null)); 2703 return $exporter->export($output); 2704 } 2705 2706 /** 2707 * Returns description of create_plan() result value. 2708 * 2709 * @return external_description 2710 */ 2711 public static function create_plan_returns() { 2712 return plan_exporter::get_read_structure(); 2713 } 2714 2715 /** 2716 * Returns description of update_plan() parameters. 2717 * 2718 * @return external_function_parameters 2719 */ 2720 public static function update_plan_parameters() { 2721 $structure = plan_exporter::get_update_structure(); 2722 $params = array('plan' => $structure); 2723 return new external_function_parameters($params); 2724 } 2725 2726 /** 2727 * Updates a new learning plan. 2728 * 2729 * @param array $plan Fields for the plan (id is required) 2730 * @return mixed 2731 */ 2732 public static function update_plan($plan) { 2733 global $PAGE; 2734 2735 $params = self::validate_parameters(self::update_plan_parameters(), array('plan' => $plan)); 2736 2737 $params = $params['plan']; 2738 2739 $plan = api::read_plan($params['id']); 2740 self::validate_context($plan->get_context()); 2741 $output = $PAGE->get_renderer('core'); 2742 2743 $params = (object) $params; 2744 $result = api::update_plan($params); 2745 $exporter = new plan_exporter($result, ['template' => $plan->get_template()]); 2746 return $exporter->export($output); 2747 } 2748 2749 /** 2750 * Returns description of update_plan() result value. 2751 * 2752 * @return external_description 2753 */ 2754 public static function update_plan_returns() { 2755 return plan_exporter::get_read_structure(); 2756 } 2757 2758 /** 2759 * Returns description of complete_plan() parameters. 2760 * 2761 * @return external_function_parameters 2762 */ 2763 public static function complete_plan_parameters() { 2764 $planid = new external_value( 2765 PARAM_INT, 2766 'The plan id', 2767 VALUE_REQUIRED 2768 ); 2769 $params = array('planid' => $planid); 2770 return new external_function_parameters($params); 2771 } 2772 2773 /** 2774 * Complete Learning plan. 2775 * 2776 * @param int $planid plan id (id is required) 2777 * @return boolean 2778 */ 2779 public static function complete_plan($planid) { 2780 $params = self::validate_parameters(self::complete_plan_parameters(), array( 2781 'planid' => $planid 2782 )); 2783 2784 return api::complete_plan($params['planid']); 2785 } 2786 2787 /** 2788 * Returns description of complete_plan() result value. 2789 * 2790 * @return external_description 2791 */ 2792 public static function complete_plan_returns() { 2793 return new external_value(PARAM_BOOL, 'True if completing learning plan was successful'); 2794 } 2795 2796 /** 2797 * Returns description of reopen_plan() parameters. 2798 * 2799 * @return external_function_parameters 2800 */ 2801 public static function reopen_plan_parameters() { 2802 $planid = new external_value( 2803 PARAM_INT, 2804 'The plan id', 2805 VALUE_REQUIRED 2806 ); 2807 $params = array('planid' => $planid); 2808 return new external_function_parameters($params); 2809 } 2810 2811 /** 2812 * Reopen Learning plan. 2813 * 2814 * @param int $planid plan id (id is required) 2815 * @return boolean 2816 */ 2817 public static function reopen_plan($planid) { 2818 $params = self::validate_parameters(self::reopen_plan_parameters(), array( 2819 'planid' => $planid 2820 )); 2821 2822 return api::reopen_plan($params['planid']); 2823 } 2824 2825 /** 2826 * Returns description of reopen_plan() result value. 2827 * 2828 * @return external_description 2829 */ 2830 public static function reopen_plan_returns() { 2831 return new external_value(PARAM_BOOL, 'True if reopening learning plan was successful'); 2832 } 2833 2834 /** 2835 * Returns description of read_plan() parameters. 2836 * 2837 * @return external_function_parameters 2838 */ 2839 public static function read_plan_parameters() { 2840 $id = new external_value( 2841 PARAM_INT, 2842 'Data base record id for the plan', 2843 VALUE_REQUIRED 2844 ); 2845 return new external_function_parameters(array('id' => $id)); 2846 } 2847 2848 /** 2849 * Read a plan by id. 2850 * 2851 * @param int $id The id of the plan. 2852 * @return \stdClass 2853 */ 2854 public static function read_plan($id) { 2855 global $PAGE; 2856 2857 $params = self::validate_parameters(self::read_plan_parameters(), array( 2858 'id' => $id, 2859 )); 2860 2861 $plan = api::read_plan($params['id']); 2862 self::validate_context($plan->get_context()); 2863 $output = $PAGE->get_renderer('core'); 2864 2865 $exporter = new plan_exporter($plan, array('template' => $plan->get_template())); 2866 $record = $exporter->export($output); 2867 return external_api::clean_returnvalue(self::read_plan_returns(), $record); 2868 } 2869 2870 /** 2871 * Returns description of read_plan() result value. 2872 * 2873 * @return external_description 2874 */ 2875 public static function read_plan_returns() { 2876 return plan_exporter::get_read_structure(); 2877 } 2878 2879 /** 2880 * Returns description of delete_plan() parameters. 2881 * 2882 * @return external_function_parameters 2883 */ 2884 public static function delete_plan_parameters() { 2885 $id = new external_value( 2886 PARAM_INT, 2887 'Data base record id for the learning plan', 2888 VALUE_REQUIRED 2889 ); 2890 2891 $params = array( 2892 'id' => $id, 2893 ); 2894 return new external_function_parameters($params); 2895 } 2896 2897 /** 2898 * Delete a plan. 2899 * 2900 * @param int $id The plan id 2901 * @return boolean 2902 */ 2903 public static function delete_plan($id) { 2904 $params = self::validate_parameters(self::delete_plan_parameters(), array( 2905 'id' => $id, 2906 )); 2907 2908 $plan = api::read_plan($params['id']); 2909 self::validate_context($plan->get_context()); 2910 2911 return external_api::clean_returnvalue(self::delete_plan_returns(), api::delete_plan($params['id'])); 2912 } 2913 2914 /** 2915 * Returns description of delete_plan() result value. 2916 * 2917 * @return external_description 2918 */ 2919 public static function delete_plan_returns() { 2920 return new external_value(PARAM_BOOL, 'True if the delete was successful'); 2921 } 2922 2923 /** 2924 * Returns description of external function parameters. 2925 * 2926 * @return external_function_parameters 2927 */ 2928 public static function plan_cancel_review_request_parameters() { 2929 return new external_function_parameters(array( 2930 'id' => new external_value(PARAM_INT, 'The plan ID'), 2931 )); 2932 } 2933 2934 /** 2935 * External function plan_cancel_review_request. 2936 * 2937 * @param int $id The plan ID. 2938 * @return boolean 2939 */ 2940 public static function plan_cancel_review_request($id) { 2941 $params = self::validate_parameters(self::plan_cancel_review_request_parameters(), array( 2942 'id' => $id 2943 )); 2944 2945 $plan = api::read_plan($id); 2946 self::validate_context($plan->get_context()); 2947 2948 return api::plan_cancel_review_request($plan); 2949 } 2950 2951 /** 2952 * Returns description of external function result value. 2953 * 2954 * @return external_function_parameters 2955 */ 2956 public static function plan_cancel_review_request_returns() { 2957 return new external_value(PARAM_BOOL, 'The success'); 2958 } 2959 2960 /** 2961 * Returns description of external function parameters. 2962 * 2963 * @return external_function_parameters 2964 */ 2965 public static function plan_request_review_parameters() { 2966 return new external_function_parameters(array( 2967 'id' => new external_value(PARAM_INT, 'The plan ID'), 2968 )); 2969 } 2970 2971 /** 2972 * External function plan_request_review. 2973 * 2974 * @param int $id The plan ID. 2975 * @return boolean 2976 */ 2977 public static function plan_request_review($id) { 2978 $params = self::validate_parameters(self::plan_request_review_parameters(), array( 2979 'id' => $id 2980 )); 2981 2982 $plan = api::read_plan($id); 2983 self::validate_context($plan->get_context()); 2984 2985 return api::plan_request_review($plan); 2986 } 2987 2988 /** 2989 * Returns description of external function result value. 2990 * 2991 * @return external_function_parameters 2992 */ 2993 public static function plan_request_review_returns() { 2994 return new external_value(PARAM_BOOL, 'The success'); 2995 } 2996 2997 /** 2998 * Returns description of external function parameters. 2999 * 3000 * @return external_function_parameters 3001 */ 3002 public static function plan_start_review_parameters() { 3003 return new external_function_parameters(array( 3004 'id' => new external_value(PARAM_INT, 'The plan ID'), 3005 )); 3006 } 3007 3008 /** 3009 * External function plan_start_review. 3010 * 3011 * @param int $id The plan ID. 3012 * @return boolean 3013 */ 3014 public static function plan_start_review($id) { 3015 $params = self::validate_parameters(self::plan_start_review_parameters(), array( 3016 'id' => $id 3017 )); 3018 3019 $plan = api::read_plan($id); 3020 self::validate_context($plan->get_context()); 3021 3022 return api::plan_start_review($plan); 3023 } 3024 3025 /** 3026 * Returns description of external function result value. 3027 * 3028 * @return external_function_parameters 3029 */ 3030 public static function plan_start_review_returns() { 3031 return new external_value(PARAM_BOOL, 'The success'); 3032 } 3033 3034 /** 3035 * Returns description of external function parameters. 3036 * 3037 * @return external_function_parameters 3038 */ 3039 public static function plan_stop_review_parameters() { 3040 return new external_function_parameters(array( 3041 'id' => new external_value(PARAM_INT, 'The plan ID'), 3042 )); 3043 } 3044 3045 /** 3046 * External function plan_stop_review. 3047 * 3048 * @param int $id The plan ID. 3049 * @return boolean 3050 */ 3051 public static function plan_stop_review($id) { 3052 $params = self::validate_parameters(self::plan_stop_review_parameters(), array( 3053 'id' => $id 3054 )); 3055 3056 $plan = api::read_plan($id); 3057 self::validate_context($plan->get_context()); 3058 3059 return api::plan_stop_review($plan); 3060 } 3061 3062 /** 3063 * Returns description of external function result value. 3064 * 3065 * @return external_function_parameters 3066 */ 3067 public static function plan_stop_review_returns() { 3068 return new external_value(PARAM_BOOL, 'The success'); 3069 } 3070 3071 /** 3072 * Returns description of external function parameters. 3073 * 3074 * @return external_function_parameters 3075 */ 3076 public static function approve_plan_parameters() { 3077 return new external_function_parameters(array( 3078 'id' => new external_value(PARAM_INT, 'The plan ID'), 3079 )); 3080 } 3081 3082 /** 3083 * External function approve_plan. 3084 * 3085 * @param int $id The plan ID. 3086 * @return boolean 3087 */ 3088 public static function approve_plan($id) { 3089 $params = self::validate_parameters(self::approve_plan_parameters(), array( 3090 'id' => $id, 3091 )); 3092 3093 $plan = api::read_plan($id); 3094 self::validate_context($plan->get_context()); 3095 3096 return api::approve_plan($plan); 3097 } 3098 3099 /** 3100 * Returns description of external function result value. 3101 * 3102 * @return external_function_parameters 3103 */ 3104 public static function approve_plan_returns() { 3105 return new external_value(PARAM_BOOL, 'The success'); 3106 } 3107 3108 /** 3109 * Returns description of external function parameters. 3110 * 3111 * @return external_function_parameters 3112 */ 3113 public static function unapprove_plan_parameters() { 3114 return new external_function_parameters(array( 3115 'id' => new external_value(PARAM_INT, 'The plan ID'), 3116 )); 3117 } 3118 3119 /** 3120 * External function unapprove_plan. 3121 * 3122 * @param int $id The plan ID. 3123 * @return boolean 3124 */ 3125 public static function unapprove_plan($id) { 3126 $params = self::validate_parameters(self::unapprove_plan_parameters(), array( 3127 'id' => $id, 3128 )); 3129 3130 $plan = api::read_plan($id); 3131 self::validate_context($plan->get_context()); 3132 3133 return api::unapprove_plan($plan); 3134 } 3135 3136 /** 3137 * Returns description of external function result value. 3138 * 3139 * @return external_function_parameters 3140 */ 3141 public static function unapprove_plan_returns() { 3142 return new external_value(PARAM_BOOL, 'The success'); 3143 } 3144 3145 /** 3146 * External function parameters structure. 3147 * 3148 * @return external_description 3149 */ 3150 public static function list_plan_competencies_parameters() { 3151 return new external_function_parameters(array( 3152 'id' => new external_value(PARAM_INT, 'The plan ID.') 3153 )); 3154 } 3155 3156 /** 3157 * List plan competencies. 3158 * @param int $id The plan ID. 3159 * @return array 3160 */ 3161 public static function list_plan_competencies($id) { 3162 global $PAGE; 3163 3164 $params = self::validate_parameters(self::list_plan_competencies_parameters(), array('id' => $id)); 3165 $id = $params['id']; 3166 $plan = api::read_plan($id); 3167 $usercontext = $plan->get_context(); 3168 self::validate_context($usercontext); 3169 $output = $PAGE->get_renderer('core'); 3170 3171 $result = api::list_plan_competencies($plan); 3172 3173 if ($plan->get('status') == plan::STATUS_COMPLETE) { 3174 $ucproperty = 'usercompetencyplan'; 3175 } else { 3176 $ucproperty = 'usercompetency'; 3177 } 3178 3179 $helper = new performance_helper(); 3180 foreach ($result as $key => $r) { 3181 $context = $helper->get_context_from_competency($r->competency); 3182 $scale = $helper->get_scale_from_competency($r->competency); 3183 3184 $exporter = new competency_exporter($r->competency, array('context' => $context)); 3185 $r->competency = $exporter->export($output); 3186 3187 if ($r->usercompetency) { 3188 $exporter = new user_competency_exporter($r->usercompetency, array('scale' => $scale)); 3189 $r->usercompetency = $exporter->export($output); 3190 unset($r->usercompetencyplan); 3191 } else { 3192 $exporter = new user_competency_plan_exporter($r->usercompetencyplan, array('scale' => $scale)); 3193 $r->usercompetencyplan = $exporter->export($output); 3194 unset($r->usercompetency); 3195 } 3196 } 3197 return $result; 3198 } 3199 3200 /** 3201 * External function return structure. 3202 * 3203 * @return external_description 3204 */ 3205 public static function list_plan_competencies_returns() { 3206 $uc = user_competency_exporter::get_read_structure(); 3207 $ucp = user_competency_plan_exporter::get_read_structure(); 3208 3209 $uc->required = VALUE_OPTIONAL; 3210 $ucp->required = VALUE_OPTIONAL; 3211 3212 return new external_multiple_structure( 3213 new external_single_structure(array( 3214 'competency' => competency_exporter::get_read_structure(), 3215 'usercompetency' => $uc, 3216 'usercompetencyplan' => $ucp 3217 )) 3218 ); 3219 } 3220 3221 /** 3222 * Returns description of external function parameters. 3223 * 3224 * @return external_function_parameters 3225 */ 3226 public static function list_user_plans_parameters() { 3227 return new external_function_parameters(array( 3228 'userid' => new external_value(PARAM_INT, 'The user ID'), 3229 )); 3230 } 3231 3232 /** 3233 * External function list_user_plans. 3234 * 3235 * @param int $userid The user ID. 3236 * @return boolean 3237 */ 3238 public static function list_user_plans($userid) { 3239 global $PAGE; 3240 $params = self::validate_parameters(self::list_user_plans_parameters(), array( 3241 'userid' => $userid 3242 )); 3243 3244 $context = context_user::instance($params['userid']); 3245 self::validate_context($context); 3246 $output = $PAGE->get_renderer('core'); 3247 3248 $response = array(); 3249 $plans = api::list_user_plans($params['userid']); 3250 foreach ($plans as $plan) { 3251 $exporter = new plan_exporter($plan, array('template' => $plan->get_template())); 3252 $response[] = $exporter->export($output); 3253 } 3254 3255 return $response; 3256 } 3257 3258 /** 3259 * Returns description of external function result value. 3260 * 3261 * @return external_function_parameters 3262 */ 3263 public static function list_user_plans_returns() { 3264 return new external_multiple_structure( 3265 plan_exporter::get_read_structure() 3266 ); 3267 } 3268 3269 /** 3270 * Returns description of external function parameters. 3271 * 3272 * @return external_description 3273 */ 3274 public static function read_user_evidence_parameters() { 3275 return new external_function_parameters(array( 3276 'id' => new external_value(PARAM_INT, 'The user evidence ID.'), 3277 )); 3278 } 3279 3280 /** 3281 * Delete a user evidence. 3282 * 3283 * @param int $id The evidence id 3284 * @return boolean 3285 */ 3286 public static function read_user_evidence($id) { 3287 global $PAGE; 3288 $params = self::validate_parameters(self::read_user_evidence_parameters(), array('id' => $id)); 3289 3290 $userevidence = api::read_user_evidence($params['id']); 3291 $context = $userevidence->get_context(); 3292 self::validate_context($context); 3293 $output = $PAGE->get_renderer('core'); 3294 3295 $exporter = new user_evidence_exporter($userevidence, array('context' => $context, 3296 'competencies' => $userevidence->get_competencies())); 3297 return $exporter->export($output); 3298 } 3299 3300 /** 3301 * Returns description of external function result value. 3302 * 3303 * @return external_description 3304 */ 3305 public static function read_user_evidence_returns() { 3306 return user_evidence_exporter::get_read_structure(); 3307 } 3308 3309 /** 3310 * Returns description of external function parameters. 3311 * 3312 * @return external_function_parameters 3313 */ 3314 public static function delete_user_evidence_parameters() { 3315 return new external_function_parameters(array( 3316 'id' => new external_value(PARAM_INT, 'The user evidence ID.'), 3317 )); 3318 } 3319 3320 /** 3321 * Delete a user evidence. 3322 * 3323 * @param int $id The evidence id 3324 * @return boolean 3325 */ 3326 public static function delete_user_evidence($id) { 3327 $params = self::validate_parameters(self::delete_user_evidence_parameters(), array('id' => $id)); 3328 3329 $userevidence = api::read_user_evidence($params['id']); 3330 self::validate_context($userevidence->get_context()); 3331 3332 return api::delete_user_evidence($userevidence->get('id')); 3333 } 3334 3335 /** 3336 * Returns description of external function result value. 3337 * 3338 * @return external_description 3339 */ 3340 public static function delete_user_evidence_returns() { 3341 return new external_value(PARAM_BOOL, 'True if the delete was successful'); 3342 } 3343 3344 /** 3345 * Returns description of external function parameters. 3346 * 3347 * @return external_function_parameters 3348 */ 3349 public static function create_user_evidence_competency_parameters() { 3350 return new external_function_parameters(array( 3351 'userevidenceid' => new external_value(PARAM_INT, 'The user evidence ID.'), 3352 'competencyid' => new external_value(PARAM_INT, 'The competency ID.'), 3353 )); 3354 } 3355 3356 /** 3357 * Delete a user evidence competency relationship. 3358 * 3359 * @param int $userevidenceid The user evidence id. 3360 * @param int $competencyid The competency id. 3361 * @return boolean 3362 */ 3363 public static function create_user_evidence_competency($userevidenceid, $competencyid) { 3364 global $PAGE; 3365 $params = self::validate_parameters(self::create_user_evidence_competency_parameters(), array( 3366 'userevidenceid' => $userevidenceid, 3367 'competencyid' => $competencyid, 3368 )); 3369 3370 $userevidence = api::read_user_evidence($params['userevidenceid']); 3371 self::validate_context($userevidence->get_context()); 3372 3373 $relation = api::create_user_evidence_competency($userevidence, $competencyid); 3374 $exporter = new user_evidence_competency_exporter($relation); 3375 return $exporter->export($PAGE->get_renderer('core')); 3376 } 3377 3378 /** 3379 * Returns description of external function result value. 3380 * 3381 * @return external_description 3382 */ 3383 public static function create_user_evidence_competency_returns() { 3384 return user_evidence_competency_exporter::get_read_structure(); 3385 } 3386 3387 /** 3388 * Returns description of external function parameters. 3389 * 3390 * @return external_function_parameters 3391 */ 3392 public static function delete_user_evidence_competency_parameters() { 3393 return new external_function_parameters(array( 3394 'userevidenceid' => new external_value(PARAM_INT, 'The user evidence ID.'), 3395 'competencyid' => new external_value(PARAM_INT, 'The competency ID.'), 3396 )); 3397 } 3398 3399 /** 3400 * Delete a user evidence competency relationship. 3401 * 3402 * @param int $userevidenceid The user evidence id. 3403 * @param int $competencyid The competency id. 3404 * @return boolean 3405 */ 3406 public static function delete_user_evidence_competency($userevidenceid, $competencyid) { 3407 $params = self::validate_parameters(self::delete_user_evidence_competency_parameters(), array( 3408 'userevidenceid' => $userevidenceid, 3409 'competencyid' => $competencyid, 3410 )); 3411 3412 $userevidence = api::read_user_evidence($params['userevidenceid']); 3413 self::validate_context($userevidence->get_context()); 3414 3415 return api::delete_user_evidence_competency($userevidence, $params['competencyid']); 3416 } 3417 3418 /** 3419 * Returns description of external function result value. 3420 * 3421 * @return external_description 3422 */ 3423 public static function delete_user_evidence_competency_returns() { 3424 return new external_value(PARAM_BOOL, 'True if the delete was successful'); 3425 } 3426 3427 /** 3428 * Returns description of external function parameters. 3429 * 3430 * @return external_function_parameters 3431 */ 3432 public static function request_review_of_user_evidence_linked_competencies_parameters() { 3433 return new external_function_parameters(array( 3434 'id' => new external_value(PARAM_INT, 'The user evidence ID.') 3435 )); 3436 } 3437 3438 /** 3439 * Send user evidence competencies to review. 3440 * 3441 * @param int $id The user evidence id. 3442 * @return boolean 3443 */ 3444 public static function request_review_of_user_evidence_linked_competencies($id) { 3445 $params = self::validate_parameters(self::request_review_of_user_evidence_linked_competencies_parameters(), array( 3446 'id' => $id 3447 )); 3448 3449 $userevidence = api::read_user_evidence($id); 3450 self::validate_context($userevidence->get_context()); 3451 3452 return api::request_review_of_user_evidence_linked_competencies($id); 3453 } 3454 3455 /** 3456 * Returns description of external function result value. 3457 * 3458 * @return external_description 3459 */ 3460 public static function request_review_of_user_evidence_linked_competencies_returns() { 3461 return new external_value(PARAM_BOOL, 'True if all competencies were send to review'); 3462 } 3463 3464 3465 /** 3466 * Returns the description of the get_scale_values() parameters. 3467 * 3468 * @return external_function_parameters. 3469 */ 3470 public static function get_scale_values_parameters() { 3471 $scaleid = new external_value( 3472 PARAM_INT, 3473 'The scale id', 3474 VALUE_REQUIRED 3475 ); 3476 $params = array('scaleid' => $scaleid); 3477 return new external_function_parameters($params); 3478 } 3479 3480 /** 3481 * Get the values associated with a scale. 3482 * 3483 * @param int $scaleid Scale ID 3484 * @return array Values for a scale. 3485 */ 3486 public static function get_scale_values($scaleid) { 3487 global $DB; 3488 $params = self::validate_parameters(self::get_scale_values_parameters(), 3489 array( 3490 'scaleid' => $scaleid, 3491 ) 3492 ); 3493 $context = context_system::instance(); 3494 self::validate_context($context); 3495 // The following section is not learning plan specific and so has not been moved to the api. 3496 // Retrieve the scale value from the database. 3497 $scale = grade_scale::fetch(array('id' => $scaleid)); 3498 $scalevalues = $scale->load_items(); 3499 foreach ($scalevalues as $key => $value) { 3500 // Add a key (make the first value 1). 3501 $scalevalues[$key] = array( 3502 'id' => $key + 1, 3503 'name' => \core_external\util::format_string($value, $context->id) 3504 ); 3505 } 3506 return $scalevalues; 3507 } 3508 3509 /** 3510 * Returns description of get_scale_values() result value. 3511 * 3512 * @return external_multiple_structure 3513 */ 3514 public static function get_scale_values_returns() { 3515 return new external_multiple_structure( 3516 new external_single_structure(array( 3517 'id' => new external_value(PARAM_INT, 'Scale value ID'), 3518 'name' => new external_value(PARAM_RAW, 'Scale value name') 3519 )) 3520 ); 3521 } 3522 3523 3524 /** 3525 * Returns the description of the add_related_competency_parameters() parameters. 3526 * 3527 * @return external_function_parameters. 3528 */ 3529 public static function add_related_competency_parameters() { 3530 $competencyid = new external_value( 3531 PARAM_INT, 3532 'The competency id', 3533 VALUE_REQUIRED 3534 ); 3535 $relatedcompetencyid = new external_value( 3536 PARAM_INT, 3537 'The related competency id', 3538 VALUE_REQUIRED 3539 ); 3540 $params = array( 3541 'competencyid' => $competencyid, 3542 'relatedcompetencyid' => $relatedcompetencyid 3543 ); 3544 return new external_function_parameters($params); 3545 } 3546 3547 /** 3548 * Adds a related competency. 3549 * 3550 * @param int $competencyid 3551 * @param int $relatedcompetencyid 3552 * @return bool 3553 */ 3554 public static function add_related_competency($competencyid, $relatedcompetencyid) { 3555 $params = self::validate_parameters(self::add_related_competency_parameters(), array( 3556 'competencyid' => $competencyid, 3557 'relatedcompetencyid' => $relatedcompetencyid 3558 )); 3559 $competency = api::read_competency($params['competencyid']); 3560 self::validate_context($competency->get_context()); 3561 3562 return api::add_related_competency($params['competencyid'], $params['relatedcompetencyid']); 3563 } 3564 3565 /** 3566 * Returns description of add_related_competency_returns() result value. 3567 * 3568 * @return \core_external\external_description 3569 */ 3570 public static function add_related_competency_returns() { 3571 return new external_value(PARAM_BOOL, 'True if successful.'); 3572 } 3573 3574 /** 3575 * Returns the description of the remove_related_competency_parameters() parameters. 3576 * 3577 * @return external_function_parameters. 3578 */ 3579 public static function remove_related_competency_parameters() { 3580 $competencyid = new external_value( 3581 PARAM_INT, 3582 'The competency id', 3583 VALUE_REQUIRED 3584 ); 3585 $relatedcompetencyid = new external_value( 3586 PARAM_INT, 3587 'The related competency id', 3588 VALUE_REQUIRED 3589 ); 3590 $params = array( 3591 'competencyid' => $competencyid, 3592 'relatedcompetencyid' => $relatedcompetencyid 3593 ); 3594 return new external_function_parameters($params); 3595 } 3596 3597 /** 3598 * Removes a related competency. 3599 * 3600 * @param int $competencyid 3601 * @param int $relatedcompetencyid 3602 * @return bool 3603 */ 3604 public static function remove_related_competency($competencyid, $relatedcompetencyid) { 3605 $params = self::validate_parameters(self::remove_related_competency_parameters(), array( 3606 'competencyid' => $competencyid, 3607 'relatedcompetencyid' => $relatedcompetencyid 3608 )); 3609 $competency = api::read_competency($params['competencyid']); 3610 self::validate_context($competency->get_context()); 3611 3612 return api::remove_related_competency($params['competencyid'], $params['relatedcompetencyid']); 3613 } 3614 3615 /** 3616 * Returns description of remove_related_competency_returns() result value. 3617 * 3618 * @return \core_external\external_description 3619 */ 3620 public static function remove_related_competency_returns() { 3621 return new external_value(PARAM_BOOL, 'True if successful.'); 3622 } 3623 3624 /** 3625 * Returns description of update_ruleoutcome_course_competency() parameters. 3626 * 3627 * @return external_function_parameters 3628 */ 3629 public static function set_course_competency_ruleoutcome_parameters() { 3630 $coursecompetencyid = new external_value( 3631 PARAM_INT, 3632 'Data base record id for the course competency', 3633 VALUE_REQUIRED 3634 ); 3635 3636 $ruleoutcome = new external_value( 3637 PARAM_INT, 3638 'Ruleoutcome value', 3639 VALUE_REQUIRED 3640 ); 3641 3642 $params = array( 3643 'coursecompetencyid' => $coursecompetencyid, 3644 'ruleoutcome' => $ruleoutcome, 3645 ); 3646 return new external_function_parameters($params); 3647 } 3648 3649 /** 3650 * Change the ruleoutcome of a course competency. 3651 * 3652 * @param int $coursecompetencyid The course competency id 3653 * @param int $ruleoutcome The ruleoutcome value 3654 * @return bool 3655 */ 3656 public static function set_course_competency_ruleoutcome($coursecompetencyid, $ruleoutcome) { 3657 $params = self::validate_parameters(self::set_course_competency_ruleoutcome_parameters(), array( 3658 'coursecompetencyid' => $coursecompetencyid, 3659 'ruleoutcome' => $ruleoutcome, 3660 )); 3661 3662 $coursecompetency = new course_competency($params['coursecompetencyid']); 3663 self::validate_context(context_course::instance($coursecompetency->get('courseid'))); 3664 3665 return api::set_course_competency_ruleoutcome($coursecompetency, $params['ruleoutcome']); 3666 } 3667 3668 /** 3669 * Returns description of update_ruleoutcome_course_competency() result value. 3670 * 3671 * @return external_value 3672 */ 3673 public static function set_course_competency_ruleoutcome_returns() { 3674 return new external_value(PARAM_BOOL, 'True if the update was successful'); 3675 } 3676 3677 3678 /** 3679 * Returns description of external function parameters. 3680 * 3681 * @return external_function_parameters 3682 */ 3683 public static function grade_competency_parameters() { 3684 $userid = new external_value( 3685 PARAM_INT, 3686 'User ID', 3687 VALUE_REQUIRED 3688 ); 3689 $competencyid = new external_value( 3690 PARAM_INT, 3691 'Competency ID', 3692 VALUE_REQUIRED 3693 ); 3694 $grade = new external_value( 3695 PARAM_INT, 3696 'New grade', 3697 VALUE_REQUIRED 3698 ); 3699 $note = new external_value( 3700 PARAM_NOTAGS, 3701 'A note to attach to the evidence', 3702 VALUE_DEFAULT 3703 ); 3704 3705 $params = array( 3706 'userid' => $userid, 3707 'competencyid' => $competencyid, 3708 'grade' => $grade, 3709 'note' => $note, 3710 ); 3711 return new external_function_parameters($params); 3712 } 3713 3714 /** 3715 * Grade a competency. 3716 * 3717 * @param int $userid The user ID. 3718 * @param int $competencyid The competency id 3719 * @param int $grade The new grade value 3720 * @param string $note A note to attach to the evidence 3721 * @return bool 3722 */ 3723 public static function grade_competency($userid, $competencyid, $grade, $note = null) { 3724 global $USER, $PAGE; 3725 $params = self::validate_parameters(self::grade_competency_parameters(), array( 3726 'userid' => $userid, 3727 'competencyid' => $competencyid, 3728 'grade' => $grade, 3729 'note' => $note 3730 )); 3731 3732 $uc = api::get_user_competency($params['userid'], $params['competencyid']); 3733 self::validate_context($uc->get_context()); 3734 3735 $output = $PAGE->get_renderer('core'); 3736 $evidence = api::grade_competency( 3737 $uc->get('userid'), 3738 $uc->get('competencyid'), 3739 $params['grade'], 3740 $params['note'] 3741 ); 3742 3743 $scale = $uc->get_competency()->get_scale(); 3744 $exporter = new evidence_exporter($evidence, [ 3745 'actionuser' => $USER, 3746 'scale' => $scale, 3747 'usercompetency' => $uc, 3748 'usercompetencyplan' => null, 3749 'context' => $evidence->get_context() 3750 ]); 3751 return $exporter->export($output); 3752 } 3753 3754 /** 3755 * Returns description of external function result value. 3756 * 3757 * @return external_value 3758 */ 3759 public static function grade_competency_returns() { 3760 return evidence_exporter::get_read_structure(); 3761 } 3762 3763 /** 3764 * Returns description of grade_competency_in_plan() parameters. 3765 * 3766 * @return external_function_parameters 3767 */ 3768 public static function grade_competency_in_plan_parameters() { 3769 $planid = new external_value( 3770 PARAM_INT, 3771 'Plan id', 3772 VALUE_REQUIRED 3773 ); 3774 $competencyid = new external_value( 3775 PARAM_INT, 3776 'Competency id', 3777 VALUE_REQUIRED 3778 ); 3779 $grade = new external_value( 3780 PARAM_INT, 3781 'New grade', 3782 VALUE_REQUIRED 3783 ); 3784 $note = new external_value( 3785 PARAM_NOTAGS, 3786 'A note to attach to the evidence', 3787 VALUE_DEFAULT 3788 ); 3789 3790 $params = array( 3791 'planid' => $planid, 3792 'competencyid' => $competencyid, 3793 'grade' => $grade, 3794 'note' => $note 3795 ); 3796 return new external_function_parameters($params); 3797 } 3798 3799 /** 3800 * Grade a competency in a plan. 3801 * 3802 * @param int $planid The plan id 3803 * @param int $competencyid The competency id 3804 * @param int $grade The new grade value 3805 * @param string $note A note to add to the evidence 3806 * @return bool 3807 */ 3808 public static function grade_competency_in_plan($planid, $competencyid, $grade, $note = null) { 3809 global $USER, $PAGE; 3810 3811 $params = self::validate_parameters(self::grade_competency_in_plan_parameters(), array( 3812 'planid' => $planid, 3813 'competencyid' => $competencyid, 3814 'grade' => $grade, 3815 'note' => $note 3816 )); 3817 3818 $plan = new plan($params['planid']); 3819 $context = $plan->get_context(); 3820 self::validate_context($context); 3821 $output = $PAGE->get_renderer('core'); 3822 3823 $evidence = api::grade_competency_in_plan( 3824 $plan->get('id'), 3825 $params['competencyid'], 3826 $params['grade'], 3827 $params['note'] 3828 ); 3829 $competency = api::read_competency($params['competencyid']); 3830 $scale = $competency->get_scale(); 3831 $exporter = new evidence_exporter($evidence, [ 3832 'actionuser' => $USER, 3833 'scale' => $scale, 3834 'usercompetency' => null, 3835 'usercompetencyplan' => null, 3836 'context' => $evidence->get_context() 3837 ]); 3838 return $exporter->export($output); 3839 } 3840 3841 /** 3842 * Returns description of grade_competency_in_plan() result value. 3843 * 3844 * @return external_value 3845 */ 3846 public static function grade_competency_in_plan_returns() { 3847 return evidence_exporter::get_read_structure(); 3848 } 3849 3850 /** 3851 * Returns description of user_competency_viewed() parameters. 3852 * 3853 * @return external_function_parameters 3854 */ 3855 public static function user_competency_viewed_parameters() { 3856 $usercompetencyid = new external_value( 3857 PARAM_INT, 3858 'The user competency id', 3859 VALUE_REQUIRED 3860 ); 3861 $params = array( 3862 'usercompetencyid' => $usercompetencyid 3863 ); 3864 return new external_function_parameters($params); 3865 } 3866 3867 /** 3868 * Log user competency viewed event. 3869 * 3870 * @param int $usercompetencyid The user competency ID. 3871 * @return boolean 3872 */ 3873 public static function user_competency_viewed($usercompetencyid) { 3874 $params = self::validate_parameters(self::user_competency_viewed_parameters(), array( 3875 'usercompetencyid' => $usercompetencyid 3876 )); 3877 3878 $uc = api::get_user_competency_by_id($params['usercompetencyid']); 3879 $result = api::user_competency_viewed($uc); 3880 3881 return $result; 3882 } 3883 3884 /** 3885 * Returns description of user_competency_viewed() result value. 3886 * 3887 * @return external_description 3888 */ 3889 public static function user_competency_viewed_returns() { 3890 return new external_value(PARAM_BOOL, 'True if the event user competency viewed was logged'); 3891 } 3892 3893 /** 3894 * Returns description of user_competency_viewed_in_plan() parameters. 3895 * 3896 * @return external_function_parameters 3897 */ 3898 public static function user_competency_viewed_in_plan_parameters() { 3899 $competencyid = new external_value( 3900 PARAM_INT, 3901 'The competency id', 3902 VALUE_REQUIRED 3903 ); 3904 $userid = new external_value( 3905 PARAM_INT, 3906 'The user id', 3907 VALUE_REQUIRED 3908 ); 3909 $planid = new external_value( 3910 PARAM_INT, 3911 'The plan id', 3912 VALUE_REQUIRED 3913 ); 3914 $params = array( 3915 'competencyid' => $competencyid, 3916 'userid' => $userid, 3917 'planid' => $planid 3918 ); 3919 return new external_function_parameters($params); 3920 } 3921 3922 /** 3923 * Log user competency viewed in plan event. 3924 * 3925 * @param int $competencyid The competency ID. 3926 * @param int $userid The user ID. 3927 * @param int $planid The plan ID. 3928 * @return boolean 3929 */ 3930 public static function user_competency_viewed_in_plan($competencyid, $userid, $planid) { 3931 $params = self::validate_parameters(self::user_competency_viewed_in_plan_parameters(), array( 3932 'competencyid' => $competencyid, 3933 'userid' => $userid, 3934 'planid' => $planid 3935 )); 3936 $pl = api::get_plan_competency($params['planid'], $params['competencyid']); 3937 $result = api::user_competency_viewed_in_plan($pl->usercompetency, $params['planid']); 3938 3939 return $result; 3940 } 3941 3942 /** 3943 * Returns description of user_competency_viewed_in_plan() result value. 3944 * 3945 * @return external_description 3946 */ 3947 public static function user_competency_viewed_in_plan_returns() { 3948 return new external_value(PARAM_BOOL, 'True if the event user competency viewed in plan was logged'); 3949 } 3950 3951 /** 3952 * Returns description of user_competency_viewed_in_course() parameters. 3953 * 3954 * @return external_function_parameters 3955 */ 3956 public static function user_competency_viewed_in_course_parameters() { 3957 $competencyid = new external_value( 3958 PARAM_INT, 3959 'The competency id', 3960 VALUE_REQUIRED 3961 ); 3962 $userid = new external_value( 3963 PARAM_INT, 3964 'The user id', 3965 VALUE_REQUIRED 3966 ); 3967 $courseid = new external_value( 3968 PARAM_INT, 3969 'The course id', 3970 VALUE_REQUIRED 3971 ); 3972 $params = array( 3973 'competencyid' => $competencyid, 3974 'userid' => $userid, 3975 'courseid' => $courseid 3976 ); 3977 return new external_function_parameters($params); 3978 } 3979 3980 /** 3981 * Log user competency viewed in course event. 3982 * 3983 * @param int $competencyid The competency ID. 3984 * @param int $userid The user ID. 3985 * @param int $courseid The course ID. 3986 * @return boolean 3987 */ 3988 public static function user_competency_viewed_in_course($competencyid, $userid, $courseid) { 3989 $params = self::validate_parameters(self::user_competency_viewed_in_course_parameters(), array( 3990 'competencyid' => $competencyid, 3991 'userid' => $userid, 3992 'courseid' => $courseid 3993 )); 3994 $ucc = api::get_user_competency_in_course($params['courseid'], $params['userid'], $params['competencyid']); 3995 $result = api::user_competency_viewed_in_course($ucc); 3996 3997 return $result; 3998 } 3999 4000 /** 4001 * Returns description of user_competency_viewed_in_course() result value. 4002 * 4003 * @return external_description 4004 */ 4005 public static function user_competency_viewed_in_course_returns() { 4006 return new external_value(PARAM_BOOL, 'True if the event user competency viewed in course was logged'); 4007 } 4008 4009 /** 4010 * Returns description of user_competency_plan_viewed() parameters. 4011 * 4012 * @return external_function_parameters 4013 */ 4014 public static function user_competency_plan_viewed_parameters() { 4015 $competencyid = new external_value( 4016 PARAM_INT, 4017 'The competency id', 4018 VALUE_REQUIRED 4019 ); 4020 $userid = new external_value( 4021 PARAM_INT, 4022 'The user id', 4023 VALUE_REQUIRED 4024 ); 4025 $planid = new external_value( 4026 PARAM_INT, 4027 'The plan id', 4028 VALUE_REQUIRED 4029 ); 4030 $params = array( 4031 'competencyid' => $competencyid, 4032 'userid' => $userid, 4033 'planid' => $planid 4034 ); 4035 return new external_function_parameters($params); 4036 } 4037 4038 /** 4039 * Log user competency plan viewed event. 4040 * 4041 * @param int $competencyid The competency ID. 4042 * @param int $userid The user ID. 4043 * @param int $planid The plan ID. 4044 * @return boolean 4045 */ 4046 public static function user_competency_plan_viewed($competencyid, $userid, $planid) { 4047 $params = self::validate_parameters(self::user_competency_viewed_in_plan_parameters(), array( 4048 'competencyid' => $competencyid, 4049 'userid' => $userid, 4050 'planid' => $planid 4051 )); 4052 $pl = api::get_plan_competency($params['planid'], $params['competencyid']); 4053 $result = api::user_competency_plan_viewed($pl->usercompetencyplan); 4054 4055 return $result; 4056 } 4057 4058 /** 4059 * Returns description of user_competency_plan_viewed() result value. 4060 * 4061 * @return external_description 4062 */ 4063 public static function user_competency_plan_viewed_returns() { 4064 return new external_value(PARAM_BOOL, 'True if the event user competency plan viewed was logged'); 4065 } 4066 4067 /** 4068 * Returns description of grade_competency_in_course() parameters. 4069 * 4070 * @return external_function_parameters 4071 */ 4072 public static function grade_competency_in_course_parameters() { 4073 $courseid = new external_value( 4074 PARAM_INT, 4075 'Course id', 4076 VALUE_REQUIRED 4077 ); 4078 $userid = new external_value( 4079 PARAM_INT, 4080 'User id', 4081 VALUE_REQUIRED 4082 ); 4083 $competencyid = new external_value( 4084 PARAM_INT, 4085 'Competency id', 4086 VALUE_REQUIRED 4087 ); 4088 $grade = new external_value( 4089 PARAM_INT, 4090 'New grade', 4091 VALUE_REQUIRED 4092 ); 4093 $note = new external_value( 4094 PARAM_NOTAGS, 4095 'A note to attach to the evidence', 4096 VALUE_DEFAULT 4097 ); 4098 4099 $params = array( 4100 'courseid' => $courseid, 4101 'userid' => $userid, 4102 'competencyid' => $competencyid, 4103 'grade' => $grade, 4104 'note' => $note, 4105 ); 4106 return new external_function_parameters($params); 4107 } 4108 4109 /** 4110 * Grade a competency in a course. 4111 * 4112 * @param int $courseid The course id 4113 * @param int $userid The user id 4114 * @param int $competencyid The competency id 4115 * @param int $grade The new grade value 4116 * @param string $note A note to add to the evidence 4117 * @return bool 4118 */ 4119 public static function grade_competency_in_course($courseid, $userid, $competencyid, $grade, $note = null) { 4120 global $USER, $PAGE, $DB; 4121 4122 $params = self::validate_parameters(self::grade_competency_in_course_parameters(), array( 4123 'courseid' => $courseid, 4124 'userid' => $userid, 4125 'competencyid' => $competencyid, 4126 'grade' => $grade, 4127 'note' => $note 4128 )); 4129 4130 $course = $DB->get_record('course', array('id' => $params['courseid'])); 4131 $context = context_course::instance($course->id); 4132 self::validate_context($context); 4133 $output = $PAGE->get_renderer('core'); 4134 4135 $evidence = api::grade_competency_in_course( 4136 $params['courseid'], 4137 $params['userid'], 4138 $params['competencyid'], 4139 $params['grade'], 4140 $params['note'] 4141 ); 4142 $competency = api::read_competency($params['competencyid']); 4143 $scale = $competency->get_scale(); 4144 $exporter = new evidence_exporter($evidence, array( 4145 'actionuser' => $USER, 4146 'scale' => $scale, 4147 'usercompetency' => null, 4148 'usercompetencyplan' => null, 4149 'context' => $evidence->get_context(), 4150 )); 4151 return $exporter->export($output); 4152 } 4153 4154 /** 4155 * Returns description of grade_competency_in_course() result value. 4156 * 4157 * @return external_value 4158 */ 4159 public static function grade_competency_in_course_returns() { 4160 return evidence_exporter::get_read_structure(); 4161 } 4162 4163 /** 4164 * Returns description of unlink_plan_from_template_() parameters. 4165 * 4166 * @return external_function_parameters 4167 */ 4168 public static function unlink_plan_from_template_parameters() { 4169 $planid = new external_value( 4170 PARAM_INT, 4171 'Data base record id for the plan', 4172 VALUE_REQUIRED 4173 ); 4174 4175 $params = array( 4176 'planid' => $planid, 4177 ); 4178 return new external_function_parameters($params); 4179 } 4180 4181 /** 4182 * Unlink the plan from the template. 4183 * 4184 * @param int $planid The plan id 4185 * @return bool 4186 */ 4187 public static function unlink_plan_from_template($planid) { 4188 $params = self::validate_parameters(self::unlink_plan_from_template_parameters(), array( 4189 'planid' => $planid, 4190 )); 4191 4192 $plan = new plan($params['planid']); 4193 self::validate_context($plan->get_context()); 4194 4195 return api::unlink_plan_from_template($plan); 4196 } 4197 4198 /** 4199 * Returns description of unlink_plan_from_template_() result value. 4200 * 4201 * @return external_value 4202 */ 4203 public static function unlink_plan_from_template_returns() { 4204 return new external_value(PARAM_BOOL, 'True if the unlink was successful'); 4205 } 4206 4207 /** 4208 * Returns description of template_viewed() parameters. 4209 * 4210 * @return external_function_parameters 4211 */ 4212 public static function template_viewed_parameters() { 4213 $id = new external_value( 4214 PARAM_INT, 4215 'Data base record id for the template', 4216 VALUE_REQUIRED 4217 ); 4218 4219 $params = array( 4220 'id' => $id, 4221 ); 4222 return new external_function_parameters($params); 4223 } 4224 4225 /** 4226 * Log the template viewed event. 4227 * 4228 * @param int $id the template id 4229 * @return array of warnings and status result 4230 * @throws moodle_exception 4231 */ 4232 public static function template_viewed($id) { 4233 $params = self::validate_parameters(self::view_book_parameters(), array( 4234 'id' => $id 4235 )); 4236 4237 $template = api::read_template($params['id']); 4238 self::validate_context($template->get_context()); 4239 4240 return api::template_viewed($params['id']); 4241 } 4242 4243 /** 4244 * Returns description of template_viewed() result value. 4245 * 4246 * @return external_value 4247 */ 4248 public static function template_viewed_returns() { 4249 return new external_value(PARAM_BOOL, 'True if the log of the view was successful'); 4250 } 4251 4252 /** 4253 * Returns description of update_course_competency_settings() parameters. 4254 * 4255 * @return external_function_parameters 4256 */ 4257 public static function update_course_competency_settings_parameters() { 4258 $courseid = new external_value( 4259 PARAM_INT, 4260 'Course id for the course to update', 4261 VALUE_REQUIRED 4262 ); 4263 $pushratingstouserplans = new external_value( 4264 PARAM_BOOL, 4265 'New value of the setting', 4266 VALUE_REQUIRED 4267 ); 4268 $settings = new external_single_structure(array( 4269 'pushratingstouserplans' => $pushratingstouserplans 4270 )); 4271 $params = array( 4272 'courseid' => $courseid, 4273 'settings' => $settings, 4274 ); 4275 return new external_function_parameters($params); 4276 } 4277 4278 /** 4279 * Update the course competency settings 4280 * 4281 * @param int $courseid the course id 4282 * @param stdClass $settings The list of settings (currently only pushratingstouserplans). 4283 * @throws moodle_exception 4284 */ 4285 public static function update_course_competency_settings($courseid, $settings) { 4286 $params = self::validate_parameters(self::update_course_competency_settings_parameters(), array( 4287 'courseid' => $courseid, 4288 'settings' => $settings 4289 )); 4290 4291 $context = context_course::instance($params['courseid']); 4292 self::validate_context($context); 4293 $result = api::update_course_competency_settings($params['courseid'], $params['settings']); 4294 4295 return $result; 4296 } 4297 4298 /** 4299 * Returns description of update_course_competency_settings() result value. 4300 * 4301 * @return external_value 4302 */ 4303 public static function update_course_competency_settings_returns() { 4304 return new external_value(PARAM_BOOL, 'True if the update was successful.'); 4305 } 4306 4307 /** 4308 * Returns description of external function parameters. 4309 * 4310 * @return external_function_parameters 4311 */ 4312 public static function delete_evidence_parameters() { 4313 return new external_function_parameters(array( 4314 'id' => new external_value(PARAM_INT, 'The evidence ID'), 4315 )); 4316 } 4317 4318 /** 4319 * External function delete_evidence. 4320 * 4321 * @param int $id The evidence ID. 4322 * @return boolean 4323 */ 4324 public static function delete_evidence($id) { 4325 $params = self::validate_parameters(self::delete_evidence_parameters(), array( 4326 'id' => $id 4327 )); 4328 4329 $evidence = api::read_evidence($params['id']); 4330 $uc = api::get_user_competency_by_id($evidence->get('usercompetencyid')); 4331 self::validate_context($uc->get_context()); 4332 4333 return api::delete_evidence($evidence); 4334 } 4335 4336 /** 4337 * Returns description of external function result value. 4338 * 4339 * @return external_function_parameters 4340 */ 4341 public static function delete_evidence_returns() { 4342 return new external_value(PARAM_BOOL, 'The success'); 4343 } 4344 4345 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body