From cb4b7e55a0a338ea7bf1e5d375e08dd384564d92 Mon Sep 17 00:00:00 2001 From: Mark Nielsen Date: Thu, 3 Apr 2014 10:10:10 -0700 Subject: [PATCH] MDL-44630: Review changes * Fixing coding style violations. * Fixing DOMDocument warning. --- backup/cc/cc_includes.php | 13 +- backup/cc/cc_lib/cc_assesment_essay.php | 6 +- backup/cc/cc_lib/cc_assesment_sfib.php | 60 +-- backup/cc/cc_lib/cc_assesment_truefalse.php | 45 +-- backup/cc/cc_lib/cc_asssesment.php | 8 +- backup/cc/cc_lib/cc_converter_folder.php | 16 +- backup/cc/cc_lib/cc_converter_quiz.php | 57 ++- backup/cc/cc_lib/cc_converter_resource.php | 20 +- backup/cc/cc_lib/cc_converters.php | 14 +- backup/cc/cc_lib/cc_manifest.php | 207 +++++----- backup/cc/cc_lib/cc_page.php | 30 +- backup/cc/cc_lib/cc_resources.php | 130 +++---- backup/cc/cc_lib/cc_utils.php | 76 ++-- backup/cc/cc_lib/cc_version1.php | 360 ++++++++---------- backup/cc/cc_lib/cc_version11.php | 58 ++- backup/cc/cc_lib/cc_version_base.php | 76 ++-- .../cc/cc_lib/gral_lib/ccdependencyparser.php | 114 +++--- backup/cc/cc_lib/xmlbase.php | 134 +++---- backup/cc/entities.class.php | 30 +- backup/cc/entity.quiz.class.php | 35 +- backup/converter/imscc1/lib.php | 66 ++-- backup/converter/imscc11/lib.php | 66 ++-- 22 files changed, 793 insertions(+), 828 deletions(-) diff --git a/backup/cc/cc_includes.php b/backup/cc/cc_includes.php index 9505614ed07..0c920e1d5ef 100644 --- a/backup/cc/cc_includes.php +++ b/backup/cc/cc_includes.php @@ -13,13 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . + /** -* Main include for IMS Common Cartridge export classes -* -* @package backup-convert -* @copyright 2011 Darko Miletic -* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later -*/ + * Main include for IMS Common Cartridge export classes + * + * @package backup-convert + * @copyright 2011 Darko Miletic + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ require_once($CFG->dirroot .'/backup/cc/cc_lib/xmlbase.php'); require_once($CFG->dirroot .'/backup/cc/cc_lib/cc_resources.php'); diff --git a/backup/cc/cc_lib/cc_assesment_essay.php b/backup/cc/cc_lib/cc_assesment_essay.php index 51f31f15b12..cd8c3184f87 100644 --- a/backup/cc/cc_lib/cc_assesment_essay.php +++ b/backup/cc/cc_lib/cc_assesment_essay.php @@ -31,7 +31,7 @@ class cc_assesment_question_essay extends cc_assesment_question_proc_base { public function on_generate_metadata() { parent::on_generate_metadata(); - //Mark essay for manual grading + // Mark essay for manual grading. $this->qmetadata->enable_scoringpermitted(); $this->qmetadata->enable_computerscored(false); } @@ -49,12 +49,12 @@ class cc_assesment_question_essay extends cc_assesment_question_proc_base { public function on_generate_response_processing() { parent::on_generate_response_processing(); - //respconditions + // Response conditions. if (!empty($this->general_feedback)) { $qrespcondition = new cc_assesment_respconditiontype(); $qrespcondition->set_title('General feedback'); $this->qresprocessing->add_respcondition($qrespcondition); - //define the condition for success + // Define the condition for success. $qconditionvar = new cc_assignment_conditionvar(); $qrespcondition->set_conditionvar($qconditionvar); $qother = new cc_assignment_conditionvar_othertype(); diff --git a/backup/cc/cc_lib/cc_assesment_sfib.php b/backup/cc/cc_lib/cc_assesment_sfib.php index 8f196755276..6a83ccc1bac 100644 --- a/backup/cc/cc_lib/cc_assesment_sfib.php +++ b/backup/cc/cc_lib/cc_assesment_sfib.php @@ -21,13 +21,16 @@ defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.'); -require_once 'cc_asssesment.php'; +require_once('cc_asssesment.php'); class cc_assesment_question_sfib extends cc_assesment_question_proc_base { public function __construct($quiz, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir) { parent::__construct($quiz, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir); $this->qtype = cc_qti_profiletype::field_entry; - $this->correct_answer_node_id = $this->questions->nodeValue('plugin_qtype_truefalse_question/truefalse/trueanswer', $this->question_node); + $this->correct_answer_node_id = $this->questions->nodeValue( + 'plugin_qtype_truefalse_question/truefalse/trueanswer', + $this->question_node + ); $maximum_quiz_grade = (int)$this->quiz->nodeValue('/activity/quiz/grade'); $this->total_grade_value = ($maximum_quiz_grade + 1).'.0000000'; } @@ -45,10 +48,9 @@ class cc_assesment_question_sfib extends cc_assesment_question_proc_base { parent::on_generate_presentation(); $response_str = new cc_assesment_response_strtype(); $response_fib = new cc_assesment_render_fibtype(); - /** - * The standard requires that only rows attribute must be set - * The rest may or may not be configured. For the sake of brevity we leave it empty. - */ + + // The standard requires that only rows attribute must be set, + // the rest may or may not be configured. For the sake of brevity we leave it empty. $response_fib->set_rows(1); $response_str->set_render_fib($response_fib); $this->qpresentation->set_response_str($response_str); @@ -56,7 +58,7 @@ class cc_assesment_question_sfib extends cc_assesment_question_proc_base { public function on_generate_feedbacks() { parent::on_generate_feedbacks(); - //Question combined feedbacks + // Question combined feedback. $responsenodes = $this->questions->nodeList('plugin_qtype_shortanswer_question//answer', $this->question_node); $count = 0; foreach ($responsenodes as $respnode) { @@ -95,17 +97,14 @@ class cc_assesment_question_sfib extends cc_assesment_question_proc_base { public function on_generate_response_processing() { parent::on_generate_response_processing(); - //respconditions - /** - * General unconditional feedback must be added as a first respcondition - * without any condition and just displayfeedback (if exists) - */ + // General unconditional feedback must be added as a first respcondition + // without any condition and just displayfeedback (if exists). if (!empty($this->general_feedback)) { $qrespcondition = new cc_assesment_respconditiontype(); $qrespcondition->set_title('General feedback'); $this->qresprocessing->add_respcondition($qrespcondition); $qrespcondition->enable_continue(); - //define the condition for success + // Define the condition for success. $qconditionvar = new cc_assignment_conditionvar(); $qrespcondition->set_conditionvar($qconditionvar); $qother = new cc_assignment_conditionvar_othertype(); @@ -116,10 +115,15 @@ class cc_assesment_question_sfib extends cc_assesment_question_proc_base { $qdisplayfeedback->set_linkrefid('general_fb'); } - //Answer separate conditions - $correct_responses = $this->questions->nodeList('plugin_qtype_shortanswer_question//answer[fraction=1]', $this->question_node); - $incorrect_responses = $this->questions->nodeList('plugin_qtype_shortanswer_question//answer[fraction<1]', $this->question_node); - $items = array(array($correct_responses ,$this->correct_feedbacks), array($incorrect_responses, $this->incorrect_feedbacks)); + // Answer separate conditions. + $correct_responses = $this->questions->nodeList( + 'plugin_qtype_shortanswer_question//answer[fraction=1]', $this->question_node); + $incorrect_responses = $this->questions->nodeList( + 'plugin_qtype_shortanswer_question//answer[fraction<1]', $this->question_node); + $items = array( + array($correct_responses, $this->correct_feedbacks), + array($incorrect_responses, $this->incorrect_feedbacks) + ); foreach ($items as $respfeed) { foreach ($respfeed[0] as $coresponse) { $qrespcondition = new cc_assesment_respconditiontype(); @@ -141,24 +145,21 @@ class cc_assesment_question_sfib extends cc_assesment_question_proc_base { } } } - //success condition - /** - * For all question types outside of the Essay question, scoring is done in a - * single with a continue flag set to No. The outcome is always - * a variable named SCORE which value must be set to 100 in case of correct answer. - * Partial scores (not 0 or 100) are not supported. - */ + // Success condition. + // For all question types outside of the Essay question, scoring is done in a + // single with a continue flag set to No. The outcome is always + // a variable named SCORE which value must be set to 100 in case of correct answer. + // Partial scores (not 0 or 100) are not supported. $qrespcondition = new cc_assesment_respconditiontype(); $qrespcondition->set_title('Correct'); $this->qresprocessing->add_respcondition($qrespcondition); $qrespcondition->enable_continue(false); $qsetvar = new cc_assignment_setvartype(100); $qrespcondition->add_setvar($qsetvar); - //define the condition for success + // Define the condition for success. $qconditionvar = new cc_assignment_conditionvar(); $qrespcondition->set_conditionvar($qconditionvar); - //No case sensitivity as stated in documentation - //$case_sensitive = $this->questions->nodeValue('plugin_qtype_shortanswer_question//shortanswer/usecase', $this->question_node)==1; + foreach ($correct_responses as $coresponse) { $respc = $this->questions->nodeValue('answertext', $coresponse); $qvarequal = new cc_assignment_conditionvar_varequaltype($respc); @@ -167,12 +168,11 @@ class cc_assesment_question_sfib extends cc_assesment_question_proc_base { $qvarequal->enable_case(false); } - //Add incorrect handling + // Add incorrect handling. $qrespcondition = new cc_assesment_respconditiontype(); - //$qrespcondition->set_title('General feedback'); $this->qresprocessing->add_respcondition($qrespcondition); $qrespcondition->enable_continue(false); - //define the condition for faliure + // Define the condition for failure. $qconditionvar = new cc_assignment_conditionvar(); $qrespcondition->set_conditionvar($qconditionvar); $qother = new cc_assignment_conditionvar_othertype(); diff --git a/backup/cc/cc_lib/cc_assesment_truefalse.php b/backup/cc/cc_lib/cc_assesment_truefalse.php index 3ce84e6f729..64d0e7958e8 100644 --- a/backup/cc/cc_lib/cc_assesment_truefalse.php +++ b/backup/cc/cc_lib/cc_assesment_truefalse.php @@ -21,28 +21,29 @@ defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.'); -require_once 'cc_asssesment.php'; +require_once('cc_asssesment.php'); class cc_assesment_question_truefalse extends cc_assesment_question_proc_base { public function __construct($quiz, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir) { parent::__construct($quiz, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir); $this->qtype = cc_qti_profiletype::true_false; - $this->correct_answer_node_id = $this->questions->nodeValue('plugin_qtype_truefalse_question/truefalse/trueanswer', $this->question_node); + $this->correct_answer_node_id = $this->questions->nodeValue( + 'plugin_qtype_truefalse_question/truefalse/trueanswer', $this->question_node); $maximum_quiz_grade = (int)$this->quiz->nodeValue('/activity/quiz/grade'); $this->total_grade_value = ($maximum_quiz_grade + 1).'.0000000'; } public function on_generate_answers() { - //add responses holder + // Add responses holder. $qresponse_lid = new cc_response_lidtype(); $this->qresponse_lid = $qresponse_lid; $this->qpresentation->set_response_lid($qresponse_lid); $qresponse_choice = new cc_assesment_render_choicetype(); $qresponse_lid->set_render_choice($qresponse_choice); - //Mark that question has only one correct answer - - //which applies for multiple choice and yes/no questions + // Mark that question has only one correct answer - + // which applies for multiple choice and yes/no questions. $qresponse_lid->set_rcardinality(cc_qti_values::Single); - //are we to shuffle the responses? + // Are we to shuffle the responses? $shuffle_answers = (int)$this->quiz->nodeValue('/activity/quiz/shuffleanswers') > 0; $qresponse_choice->enable_shuffle($shuffle_answers); $answerlist = array(); @@ -59,7 +60,7 @@ class cc_assesment_question_truefalse extends cc_assesment_question_proc_base { if (empty($this->correct_answer_ident) && $id) { $this->correct_answer_ident = $answer_ident; } - //add answer specific feedbacks if not empty + // Add answer specific feedback if not empty. $content = $this->questions->nodeValue('feedback', $node); if (!empty($content)) { $result = cc_helpers::process_linked_files( $content, @@ -87,17 +88,15 @@ class cc_assesment_question_truefalse extends cc_assesment_question_proc_base { public function on_generate_response_processing() { parent::on_generate_response_processing(); - //respconditions - /** - * General unconditional feedback must be added as a first respcondition - * without any condition and just displayfeedback (if exists) - */ + // Response conditions. + // General unconditional feedback must be added as a first respcondition + // without any condition and just displayfeedback (if exists). if (!empty($this->general_feedback)) { $qrespcondition = new cc_assesment_respconditiontype(); $qrespcondition->set_title('General feedback'); $this->qresprocessing->add_respcondition($qrespcondition); $qrespcondition->enable_continue(); - //define the condition for success + // Define the condition for success. $qconditionvar = new cc_assignment_conditionvar(); $qrespcondition->set_conditionvar($qconditionvar); $qother = new cc_assignment_conditionvar_othertype(); @@ -108,23 +107,21 @@ class cc_assesment_question_truefalse extends cc_assesment_question_proc_base { $qdisplayfeedback->set_linkrefid('general_fb'); } - //success condition - /** - * For all question types outside of the Essay question, scoring is done in a - * single with a continue flag set to No. The outcome is always - * a variable named SCORE which value must be set to 100 in case of correct answer. - * Partial scores (not 0 or 100) are not supported. - */ + // Success condition. + // For all question types outside of the Essay question, scoring is done in a + // single with a continue flag set to No. The outcome is always + // a variable named SCORE which value must be set to 100 in case of correct answer. + // Partial scores (not 0 or 100) are not supported. $qrespcondition = new cc_assesment_respconditiontype(); $qrespcondition->set_title('Correct'); $this->qresprocessing->add_respcondition($qrespcondition); $qrespcondition->enable_continue(false); $qsetvar = new cc_assignment_setvartype(100); $qrespcondition->add_setvar($qsetvar); - //define the condition for success + // Define the condition for success. $qconditionvar = new cc_assignment_conditionvar(); $qrespcondition->set_conditionvar($qconditionvar); - //TODO: recheck this + // TODO: recheck this. $qvarequal = new cc_assignment_conditionvar_varequaltype($this->correct_answer_ident); $qconditionvar->set_varequal($qvarequal); $qvarequal->set_respident($this->qresponse_lid->get_ident()); @@ -143,7 +140,7 @@ class cc_assesment_question_truefalse extends cc_assesment_question_proc_base { $qdisplayfeedback->set_linkrefid($ident); } - //rest of the conditions + // Rest of the conditions. foreach ($this->answerlist as $ident => $refid) { if ($ident == $this->correct_answer_ident) { continue; @@ -153,7 +150,7 @@ class cc_assesment_question_truefalse extends cc_assesment_question_proc_base { $this->qresprocessing->add_respcondition($qrespcondition); $qsetvar = new cc_assignment_setvartype(0); $qrespcondition->add_setvar($qsetvar); - //define the condition for fail + // Define the condition for fail. $qconditionvar = new cc_assignment_conditionvar(); $qrespcondition->set_conditionvar($qconditionvar); $qvarequal = new cc_assignment_conditionvar_varequaltype($ident); diff --git a/backup/cc/cc_lib/cc_asssesment.php b/backup/cc/cc_lib/cc_asssesment.php index 56d6f904ce7..11a7c936d92 100644 --- a/backup/cc/cc_lib/cc_asssesment.php +++ b/backup/cc/cc_lib/cc_asssesment.php @@ -21,15 +21,15 @@ defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.'); -require_once 'cc_utils.php'; -require_once 'cc_general.php'; +require_once('cc_utils.php'); +require_once('cc_general.php'); abstract class cc_xml_namespace { const xml = 'http://www.w3.org/XML/1998/namespace'; } abstract class cc_qti_metadata { - //assesment + // Assessment. const qmd_assessmenttype = 'qmd_assessmenttype'; const qmd_scoretype = 'qmd_scoretype'; const qmd_feedbackpermitted = 'qmd_feedbackpermitted'; @@ -40,7 +40,7 @@ abstract class cc_qti_metadata { const cc_maxattempts = 'cc_maxattempts'; const cc_profile = 'cc_profile'; - //item + // Items. const cc_weighting = 'cc_weighting'; const qmd_scoringpermitted = 'qmd_scoringpermitted'; const qmd_computerscored = 'qmd_computerscored'; diff --git a/backup/cc/cc_lib/cc_converter_folder.php b/backup/cc/cc_lib/cc_converter_folder.php index 3498417607b..bbdeeb192a8 100644 --- a/backup/cc/cc_lib/cc_converter_folder.php +++ b/backup/cc/cc_lib/cc_converter_folder.php @@ -14,18 +14,18 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . /** -* @package backup-convert -* @subpackage cc-library -* @copyright 2012 Darko Miletic -* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later -*/ + * @package backup-convert + * @subpackage cc-library + * @copyright 2012 Darko Miletic + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ -require_once 'cc_converters.php'; -require_once 'cc_general.php'; +require_once('cc_converters.php'); +require_once('cc_general.php'); class cc_converter_folder extends cc_converter { - public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path){ + public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path) { $this->defaultfile = 'folder.xml'; parent::__construct($item, $manifest, $rootpath, $path); } diff --git a/backup/cc/cc_lib/cc_converter_quiz.php b/backup/cc/cc_lib/cc_converter_quiz.php index 28bbd2dddd9..daf32bb62ac 100644 --- a/backup/cc/cc_lib/cc_converter_quiz.php +++ b/backup/cc/cc_lib/cc_converter_quiz.php @@ -1,15 +1,36 @@ . -require_once 'cc_converters.php'; -require_once 'cc_general.php'; -require_once 'cc_asssesment.php'; -require_once 'cc_assesment_truefalse.php'; -require_once 'cc_assesment_essay.php'; -require_once 'cc_assesment_sfib.php'; +/** + * @package backup-convert + * @subpackage cc-library + * @copyright 2012 Darko Miletic + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +require_once('cc_converters.php'); +require_once('cc_general.php'); +require_once('cc_asssesment.php'); +require_once('cc_assesment_truefalse.php'); +require_once('cc_assesment_essay.php'); +require_once('cc_assesment_sfib.php'); class cc_converter_quiz extends cc_converter { - public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path){ + public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path) { $this->cc_type = cc_version11::assessment; $this->defaultfile = 'quiz.xml'; $this->defaultname = assesment11_resurce_file::deafultname; @@ -21,23 +42,23 @@ class cc_converter_quiz extends cc_converter { $title = $this->doc->nodeValue('/activity/quiz/name'); $rt->set_title($title); - //metadata + // Metadata. $metadata = new cc_assesment_metadata(); $rt->set_metadata($metadata); $metadata->enable_feedback(); $metadata->enable_hints(); $metadata->enable_solutions(); - //attempts + // Attempts. $max_attempts = (int)$this->doc->nodeValue('/activity/quiz/attempts_number'); if ($max_attempts > 0) { - //qti does not support number of specific attempts bigger than 5 (??) + // Qti does not support number of specific attempts bigger than 5 (??) if ($max_attempts > 5) { $max_attempts = cc_qti_values::unlimited; } $metadata->set_maxattempts($max_attempts); } - //timelimit must be converted into minutes - $timelimit = (int)floor((int)$this->doc->nodeValue('/activity/quiz/timelimit')/60); + // Time limit must be converted into minutes. + $timelimit = (int)floor((int)$this->doc->nodeValue('/activity/quiz/timelimit') / 60); if ($timelimit > 0) { $metadata->set_timelimit($timelimit); $metadata->enable_latesubmissions(false); @@ -51,11 +72,11 @@ class cc_converter_quiz extends cc_converter { $outdir); cc_assesment_helper::add_assesment_description($rt, $result[0], cc_qti_values::htmltype); - //section + // Section. $section = new cc_assesment_section(); $rt->set_section($section); - //Process the actual questions + // Process the actual questions. $ndeps = cc_assesment_helper::process_questions($this->doc, $this->manifest, $section, @@ -63,14 +84,14 @@ class cc_converter_quiz extends cc_converter { $contextid, $outdir); if ($ndeps === false) { - //No exportable questions in quizz or quizz has no questions - //so just skip it + // No exportable questions in quiz or quiz has no questions + // so just skip it. return true; } - //store any additional dependencies + // Store any additional dependencies. $deps = array_merge($result[1], $ndeps); - //store everything + // Store everything. $this->store($rt, $outdir, $title, $deps); return true; } diff --git a/backup/cc/cc_lib/cc_converter_resource.php b/backup/cc/cc_lib/cc_converter_resource.php index b007c3a27e2..cbbc706350f 100644 --- a/backup/cc/cc_lib/cc_converter_resource.php +++ b/backup/cc/cc_lib/cc_converter_resource.php @@ -14,18 +14,18 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . /** -* @package backup-convert -* @subpackage cc-library -* @copyright 2011 Darko Miletic -* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later -*/ + * @package backup-convert + * @subpackage cc-library + * @copyright 2011 Darko Miletic + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ -require_once 'cc_converters.php'; -require_once 'cc_general.php'; +require_once('cc_converters.php'); +require_once('cc_general.php'); class cc_converter_resource extends cc_converter { - public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path){ + public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path) { $this->cc_type = cc_version11::webcontent; $this->defaultfile = 'resource.xml'; parent::__construct($item, $manifest, $rootpath, $path); @@ -40,7 +40,7 @@ class cc_converter_resource extends cc_converter { $outdir); $deps = null; $resvalue = null; - foreach ($files as $vfile => $values) { + foreach ($files as $values) { if ($values[2]) { $resvalue = $values[0]; break; @@ -52,7 +52,7 @@ class cc_converter_resource extends cc_converter { $resitem->title = $title; $this->item->add_child_item($resitem); - //checking the visibility + // Checking the visibility. $this->manifest->update_instructoronly($resvalue, !$this->is_visible()); return true; diff --git a/backup/cc/cc_lib/cc_converters.php b/backup/cc/cc_lib/cc_converters.php index 9958df41c73..2584bbb5424 100644 --- a/backup/cc/cc_lib/cc_converters.php +++ b/backup/cc/cc_lib/cc_converters.php @@ -14,13 +14,13 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . /** -* @package backup-convert -* @subpackage cc-library -* @copyright 2011 Darko Miletic -* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later -*/ + * @package backup-convert + * @subpackage cc-library + * @copyright 2011 Darko Miletic + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ -require_once 'cc_interfaces.php'; +require_once('cc_interfaces.php'); abstract class cc_converter { /** @@ -81,7 +81,7 @@ abstract class cc_converter { * @param string $path * @throws InvalidArgumentException */ - public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path){ + public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path) { $rpath = realpath($rootpath); if (empty($rpath)) { throw new InvalidArgumentException('Invalid path!'); diff --git a/backup/cc/cc_lib/cc_manifest.php b/backup/cc/cc_lib/cc_manifest.php index 315dd8b3421..ba426ee1b93 100644 --- a/backup/cc/cc_lib/cc_manifest.php +++ b/backup/cc/cc_lib/cc_manifest.php @@ -14,21 +14,19 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . /** -* Manifest management -* -* @package backup-convert -* @subpackage cc-library -* @copyright 2011 Darko Miletic -* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later -*/ - - -require_once 'cc_utils.php'; -require_once 'xmlbase.php'; -require_once 'cc_resources.php'; -require_once 'cc_version_base.php'; -require_once 'gral_lib/pathutils.php'; + * Manifest management + * + * @package backup-convert + * @subpackage cc-library + * @copyright 2011 Darko Miletic + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +require_once('cc_utils.php'); +require_once('xmlbase.php'); +require_once('cc_resources.php'); +require_once('cc_version_base.php'); +require_once('gral_lib/pathutils.php'); /** * Manifest Class @@ -44,16 +42,15 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest { private $ares = array(); private $mainidentifier = null; - public function __construct($ccver = cc_version::v1,$activemanifest=null, - $parentmanifest=null,$parentparentmanifest=null) { + public function __construct($ccver = cc_version::v1, $activemanifest=null, + $parentmanifest=null, $parentparentmanifest=null) { - if (is_int($ccver)){ + if (is_int($ccver)) { $this->ccversion=$ccver; $classname = "cc_version{$ccver}"; $this->ccobj = new $classname; - parent::__construct('UTF-8',true); - } else - if (is_object($ccver) && (get_class($ccver)=='cc_manifest')){ + parent::__construct('UTF-8', true); + } else if (is_object($ccver) && (get_class($ccver)=='cc_manifest')) { $this->doc = $ccver->doc; $this->rootmanifest = $ccver->rootmanifest; $this->activemanifest = $activemanifest; @@ -65,19 +62,14 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest { } } - public function __destruct() { - parent::__destruct(); - } - - /** * Register Namespace for use XPATH * */ - public function register_namespaces_for_xpath(){ + public function register_namespaces_for_xpath() { $scnam = $this->activemanifest->get_cc_namespaces(); - foreach ($scnam as $key => $value){ - $this->registerNS($key,$value); + foreach ($scnam as $key => $value) { + $this->registerNS($key, $value); } } @@ -94,11 +86,11 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest { * * @param cc_i_metadata_manifest $met */ - public function add_metadata_manifest (cc_i_metadata_manifest $met){ + public function add_metadata_manifest(cc_i_metadata_manifest $met) { $metanode = $this->node("//imscc:manifest[@identifier='". $this->activemanifest->manifestID(). "']/imscc:metadata"); - $nmeta = $this->activemanifest->create_metadata_node($met,$this->doc,$metanode); + $nmeta = $this->activemanifest->create_metadata_node($met, $this->doc, $metanode); $metanode->appendChild($nmeta); } @@ -109,18 +101,18 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest { * @param cc_i_metadata_resource $met * @param string $identifier */ - public function add_metadata_resource (cc_i_metadata_resource $met,$identifier){ - $metanode = $this->node("//imscc:resource". - "[@identifier='". - $identifier. - "']"); - $metanode2 = $this->node("//imscc:resource". - "[@identifier='". - $identifier. - "']/imscc:file"); - $nspaces = $this->activemanifest->get_cc_namespaces(); - $dnode = $this->append_new_element_ns($metanode2, $nspaces['imscc'], 'metadata'); - $this->activemanifest->create_metadata_resource_node($met, $this->doc, $dnode); + public function add_metadata_resource(cc_i_metadata_resource $met, $identifier) { + $metanode = $this->node("//imscc:resource". + "[@identifier='". + $identifier. + "']"); + $metanode2 = $this->node("//imscc:resource". + "[@identifier='". + $identifier. + "']/imscc:file"); + $nspaces = $this->activemanifest->get_cc_namespaces(); + $dnode = $this->append_new_element_ns($metanode2, $nspaces['imscc'], 'metadata'); + $this->activemanifest->create_metadata_resource_node($met, $this->doc, $dnode); } @@ -131,46 +123,56 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest { * @param string $identifier * @param string $filename */ - public function add_metadata_file (cc_i_metadata_file $met,$identifier,$filename){ + public function add_metadata_file(cc_i_metadata_file $met, $identifier, $filename) { - if (empty($met) || empty($identifier) || empty($filename)){ + if (empty($met) || empty($identifier) || empty($filename)) { throw new Exception('Try to add a metadata file with nulls values given!'); } $metanode = $this->node("//imscc:resource". - "[@identifier='". - $identifier. - "']/imscc:file". - "[@href='". - $filename. - "']"); + "[@identifier='". + $identifier. + "']/imscc:file". + "[@href='". + $filename. + "']"); - $nspaces = $this->activemanifest->get_cc_namespaces(); - $dnode = $this->doc->createElementNS($nspaces['imscc'], "metadata"); + $nspaces = $this->activemanifest->get_cc_namespaces(); + $dnode = $this->doc->createElementNS($nspaces['imscc'], "metadata"); - $metanode->appendChild($dnode); + $metanode->appendChild($dnode); - $this->activemanifest->create_metadata_file_node($met,$this->doc,$dnode); + $this->activemanifest->create_metadata_file_node($met, $this->doc, $dnode); } - public function on_create (){ + public function on_create() { $this->activemanifest = cc_builder_creator::factory($this->ccversion); $this->rootmanifest = $this->activemanifest; $result = $this->activemanifest->create_manifest($this->doc); $this->register_namespaces_for_xpath(); return $result; - } + public function get_relative_base_path() { + return $this->activemanifest->base(); + } - public function get_relative_base_path() {return $this->activemanifest->base();} - public function parent_manifest () {return new cc_manifest($this,$this->parentmanifest,$this->parentparentmanifest);} - public function root_manifest () {return new cc_manifest($this,$this->rootmanifest);} - public function manifestID () {return $this->activemanifest->manifestID();} - public function get_manifest_namespaces() {return $this->rootmanifest->get_cc_namespaces(); } + public function parent_manifest() { + return new cc_manifest($this, $this->parentmanifest, $this->parentparentmanifest); + } + public function root_manifest() { + return new cc_manifest($this, $this->rootmanifest); + } + public function manifestID() { + return $this->activemanifest->manifestID(); + } + + public function get_manifest_namespaces() { + return $this->rootmanifest->get_cc_namespaces(); + } /** * Add a new organization @@ -178,28 +180,24 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest { * @param cc_i_organization $org */ public function add_new_organization(cc_i_organization &$org) { - $norg = $this->activemanifest->create_organization_node($org,$this->doc); + $norg = $this->activemanifest->create_organization_node($org, $this->doc); $orgnode = $this->node("//imscc:manifest[@identifier='". - $this->activemanifest->manifestID(). - "']/imscc:organizations"); + $this->activemanifest->manifestID(). + "']/imscc:organizations"); $orgnode->appendChild($norg); } - - public function get_resources($searchspecific='') { $reslist = $this->get_resource_list($searchspecific); $resourcelist = array(); foreach ($reslist as $resourceitem) { - $resourcelist[]=new cc_resource($this, $resourceitem); + $resourcelist[] = new cc_resource($this, $resourceitem); } return $resourcelist; } - - public function get_cc_namespace_path($nsname) { - if (is_string($nsname) && (!empty($nsname))){ + if (is_string($nsname) && (!empty($nsname))) { $scnam = $this->activemanifest->get_cc_namespaces(); return $scnam[$nsname]; } @@ -207,24 +205,22 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest { } - public function get_resource_list($searchspecific=''){ + public function get_resource_list($searchspecific = '') { return $this->nodeList("//imscc:manifest[@identifier='". $this->activemanifest->manifestID(). "']/imscc:resources/imscc:resource".$searchspecific); } - - public function on_load (){ + public function on_load() { $this->register_namespaces_for_xpath(); $this->fill_manifest(); return true; } - public function on_save (){ + public function on_save() { return true; } - /** * Add a resource to the manifest * @@ -233,19 +229,19 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest { * @param string $type * @return array */ - public function add_resource (cc_i_resource $res, $identifier=null, $type='webcontent'){ + public function add_resource(cc_i_resource $res, $identifier = null, $type = 'webcontent') { - if (!$this->ccobj->valid($type)){ - throw new Exception("Type invalid..."); + if (!$this->ccobj->valid($type)) { + throw new Exception("Type invalid..."); } - if ($res == null){ + if ($res == null) { throw new Exception('Invalid Resource or dont give it'); } $rst = $res; - //TODO: This has to be reviewed since it does not handle properly mutiple file - // dependencies + // TODO: This has to be reviewed since it does not handle multiple files properly. + // Dependencies. if (is_object($identifier)) { $this->activemanifest->create_resource_node($rst, $this->doc, $identifier); } else { @@ -259,7 +255,7 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest { $this->activemanifest->create_resource_node($rst, $this->doc, $nresnode); foreach ($rst->files as $file) { $ident = $this->get_identifier_by_filename($file); - if($ident == null){ + if ($ident == null) { $newres = new cc_resource($rst->manifestroot, $file); if (!cc_helpers::is_html($file)) { $newres->href = null; @@ -274,11 +270,9 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest { return $tmparray; } - - - private function check_if_exist_in_other($name, $identifier){ + private function check_if_exist_in_other($name, $identifier) { $status = array(); - foreach ($this->activemanifest->resources as $value){ + foreach ($this->activemanifest->resources as $value) { if (($value->identifier != $identifier) && isset($value->files[$name])) { $status[] = $value->identifier; } @@ -286,23 +280,21 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest { return $status; } - - private function replace_file_x_dependency($depen,$name){ - foreach ($depen as $key => $value){ + private function replace_file_x_dependency($depen, $name) { + foreach ($depen as $key => $value) { ($key); - $ident = $this->get_identifier_by_filename($name); + $ident = $this->get_identifier_by_filename($name); $this->activemanifest->resources[$value]->files = - $this->array_remove_by_value($this->activemanifest->resources[$value]->files,$name); - if (!in_array($ident,$this->activemanifest->resources[$value]->dependency)){ - array_push($this->activemanifest->resources[$value]->dependency,$ident); + $this->array_remove_by_value($this->activemanifest->resources[$value]->files, $name); + if (!in_array($ident, $this->activemanifest->resources[$value]->dependency)) { + array_push($this->activemanifest->resources[$value]->dependency, $ident); } } return true; } - - private function get_identifier_by_filename($name){ + private function get_identifier_by_filename($name) { $result = null; if (isset($this->activemanifest->resources_ind[$name])) { $result = $this->activemanifest->resources_ind[$name]; @@ -310,16 +302,12 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest { return $result; } - - - private function array_remove_by_value($arr,$value) { - return array_values(array_diff($arr,array($value))); - + private function array_remove_by_value($arr, $value) { + return array_values(array_diff($arr, array($value))); } - private function array_remove_by_key($arr,$key) { - return array_values(array_diff_key($arr,array($key))); - + private function array_remove_by_key($arr, $key) { + return array_values(array_diff_key($arr, array($key))); } public function update_instructoronly($identifier, $value = false) { @@ -334,20 +322,17 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest { * * @return DOMNode */ - public function put_nodes (){ + public function put_nodes() { $resnodestr = "//imscc:manifest[@identifier='".$this->activemanifest->manifestID(). - "']/imscc:resources"; + "']/imscc:resources"; $resnode = $this->node($resnodestr); - foreach ($this->activemanifest->resources as $k => $v){ + foreach ($this->activemanifest->resources as $k => $v) { ($k); $depen = $this->check_if_exist_in_other($v->files[0], $v->identifier); - if (!empty($depen)){ - $this->replace_file_x_dependency($depen,$v->files[0]); - // coloca aca como type = webcontent porque son archivos dependientes - // quizas aqui habria q ver de que type es el que vino y segun eso, ponerlo - // en associatedcontent o en webcontent + if (!empty($depen)) { + $this->replace_file_x_dependency($depen, $v->files[0]); $v->type = 'webcontent'; } } diff --git a/backup/cc/cc_lib/cc_page.php b/backup/cc/cc_lib/cc_page.php index 48c30e4c4a6..57643425374 100644 --- a/backup/cc/cc_lib/cc_page.php +++ b/backup/cc/cc_lib/cc_page.php @@ -19,7 +19,7 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -require_once 'cc_general.php'; +require_once('cc_general.php'); class page11_resurce_file extends general_cc_file { protected $rootns = 'xmlns'; @@ -31,7 +31,7 @@ class page11_resurce_file extends general_cc_file { protected $intro = null; public function set_content($value) { - //we are not cleaning up this one on purporse. + // We are not cleaning up this one on purpose. $this->content = $value; } @@ -58,38 +58,38 @@ class page11_resurce_file extends general_cc_file { public function on_save() { $rns = $this->ccnamespaces[$this->rootns]; - //Add the basic tags + // Add the basic tags. $head = $this->append_new_element_ns($this->root, $rns, 'head'); $this->append_new_attribute_ns($head, $rns, 'profile', 'http://dublincore.org/documents/dc-html/'); - //Linking Dublin Core Metadata 1.1 + // Linking Dublin Core Metadata 1.1. $link_dc = $this->append_new_element_ns($head, $rns, 'link'); $this->append_new_attribute_ns($link_dc, $rns, 'rel', 'schema.DC'); $this->append_new_attribute_ns($link_dc, $rns, 'href', 'http://purl.org/dc/elements/1.1/'); $link_dcterms = $this->append_new_element_ns($head, $rns, 'link'); $this->append_new_attribute_ns($link_dcterms, $rns, 'rel', 'schema.DCTERMS'); $this->append_new_attribute_ns($link_dcterms, $rns, 'href', 'http://purl.org/dc/terms/'); - //Content type + // Content type. $meta_type = $this->append_new_element_ns($head, $rns, 'meta'); - $this->append_new_attribute_ns($meta_type, $rns, 'name' , 'DC.type' ); - $this->append_new_attribute_ns($meta_type, $rns, 'scheme' , 'DCTERMS.DCMIType'); - $this->append_new_attribute_ns($meta_type, $rns, 'content', 'Text' ); + $this->append_new_attribute_ns($meta_type, $rns, 'name', 'DC.type'); + $this->append_new_attribute_ns($meta_type, $rns, 'scheme', 'DCTERMS.DCMIType'); + $this->append_new_attribute_ns($meta_type, $rns, 'content', 'Text'); - //Content description + // Content description. if (!empty($this->intro)) { - $meta_description = $this->append_new_element_ns($head, $rns , 'meta' ); - $this->append_new_attribute_ns($meta_description, $rns, 'name' , 'DC.description'); - $this->append_new_attribute_ns($meta_description, $rns, 'content', $this->intro ); + $meta_description = $this->append_new_element_ns($head, $rns, 'meta'); + $this->append_new_attribute_ns($meta_description, $rns, 'name', 'DC.description'); + $this->append_new_attribute_ns($meta_description, $rns, 'content', $this->intro); } $meta = $this->append_new_element_ns($head, $rns, 'meta'); $this->append_new_attribute_ns($meta, $rns, 'http-equiv', 'Content-type'); $this->append_new_attribute_ns($meta, $rns, 'content', 'text/html; charset=UTF-8'); - //set the title + // Set the title. $title = $this->append_new_element_ns($head, $rns, 'title', $this->title); $body = $this->append_new_element_ns($this->root, $rns, 'body'); - //We are unable to use DOM for embedding HTML due to numerous content errors - //Therefore we place a dummy tag that will be later replaced with the real content + // We are unable to use DOM for embedding HTML due to numerous content errors. + // Therefore we place a dummy tag that will be later replaced with the real content. $this->append_new_element_ns($body, $rns, 'div', '##REPLACE##'); return true; diff --git a/backup/cc/cc_lib/cc_resources.php b/backup/cc/cc_lib/cc_resources.php index 565fbcb1dfc..d03ba251830 100644 --- a/backup/cc/cc_lib/cc_resources.php +++ b/backup/cc/cc_lib/cc_resources.php @@ -15,19 +15,19 @@ // along with Moodle. If not, see . /** -* @package backup-convert -* @subpackage cc-library -* @copyright 2011 Darko Miletic -* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later -*/ + * @package backup-convert + * @subpackage cc-library + * @copyright 2011 Darko Miletic + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ -require_once 'cc_interfaces.php'; -require_once 'xmlbase.php'; -require_once 'gral_lib/pathutils.php'; -require_once 'gral_lib/ccdependencyparser.php'; -require_once 'cc_version_base.php'; -require_once 'cc_version1.php'; -require_once 'cc_manifest.php'; +require_once('cc_interfaces.php'); +require_once('xmlbase.php'); +require_once('gral_lib/pathutils.php'); +require_once('gral_lib/ccdependencyparser.php'); +require_once('cc_version_base.php'); +require_once('cc_version1.php'); +require_once('cc_manifest.php'); /** * Common Cartridge Version @@ -82,19 +82,20 @@ class cc11_resource_type { */ class cc_resource implements cc_i_resource { - public $identifier = null; - public $type = null; - public $dependency = array(); - public $identifierref = null; - public $href = null; - public $base = null; - public $persiststate = null; - public $filename = null; - public $files = array(); - public $isempty = null; - public $manifestroot = null; - public $folder = null; - public $instructoronly = false; + public $identifier = null; + public $type = null; + public $dependency = array(); + public $identifierref = null; + public $href = null; + public $base = null; + public $persiststate = null; + public $metadata = array(); + public $filename = null; + public $files = array(); + public $isempty = null; + public $manifestroot = null; + public $folder = null; + public $instructoronly = false; private $throwonerror = true; @@ -102,10 +103,10 @@ class cc_resource implements cc_i_resource { $this->throwonerror = $throwonerror; if (is_string($manifest)) { $this->folder = $folder; - $this->process_resource($manifest, $file,$folder); + $this->process_resource($manifest, $file, $folder); $this->manifestroot = $manifest; } else if (is_object($manifest)) { - $this->import_resource($file,$manifest.$folder); + $this->import_resource($file, $manifest); } } @@ -115,12 +116,10 @@ class cc_resource implements cc_i_resource { * @param string $fname * @param string $location */ - public function add_resource ($fname, $location =''){ - $this->process_resource($fname,$location); - + public function add_resource ($fname, $location ='') { + $this->process_resource($fname, $location, null); } - /** * Import a resource * @@ -131,10 +130,10 @@ class cc_resource implements cc_i_resource { $searchstr = "//imscc:manifest[@identifier='".$doc->manifestID(). "']/imscc:resources/imscc:resource"; - $this->identifier = $this->get_attr_value($node,"identifier"); - $this->type = $this->get_attr_value($node,"type"); - $this->href = $this->get_attr_value($node,"href"); - $this->base = $this->get_attr_value($node,"base"); + $this->identifier = $this->get_attr_value($node, "identifier"); + $this->type = $this->get_attr_value($node, "type"); + $this->href = $this->get_attr_value($node, "href"); + $this->base = $this->get_attr_value($node, "base"); $this->persiststate = null; $nodo = $doc->nodeList($searchstr."[@identifier='". $this->identifier."']/metadata/@href"); @@ -155,7 +154,6 @@ class cc_resource implements cc_i_resource { $this->isempty = false; } - /** * Get a attribute value * @@ -165,12 +163,12 @@ class cc_resource implements cc_i_resource { * @return string */ public function get_attr_value(&$nod, $name, $ns=null) { - return is_null($ns) ? - ($nod->hasAttribute($name) ? $nod->getAttribute($name) : null) : - ($nod->hasAttributeNS($ns, $name) ? $nod->getAttributeNS($ns, $name) : null); + if (is_null($ns)) { + return ($nod->hasAttribute($name) ? $nod->getAttribute($name) : null); + } + return ($nod->hasAttributeNS($ns, $name) ? $nod->getAttributeNS($ns, $name) : null); } - /** * Process a resource * @@ -180,12 +178,12 @@ class cc_resource implements cc_i_resource { */ public function process_resource($manifestroot, &$fname, $folder) { $file = empty($folder) ? $manifestroot.'/'.$fname : $manifestroot.'/'.$folder.'/'.$fname; - if (!file_exists($file) && $this->throwonerror){ + if (!file_exists($file) && $this->throwonerror) { throw new Exception('The file doesnt exist!'); } GetDepFiles($manifestroot, $fname, $this->folder, $this->files); - array_unshift($this->files,$folder.$fname); + array_unshift($this->files, $folder.$fname); $this->init_empty_new(); $this->href = $folder.$fname; $this->identifierref = $folder.$fname; @@ -197,43 +195,41 @@ class cc_resource implements cc_i_resource { public function adjust_path($mroot, $fname) { $result = null; if (file_exists($fname->filename)) { - $result = pathDiff($fname->filename,$mroot); + $result = pathDiff($fname->filename, $mroot); } else if (file_exists($mroot.$fname->filename) || file_exists($mroot.DIRECTORY_SEPARATOR.$fname->filename)) { - $result = trim(toUrlPath($fname->filename),"/"); + $result = $fname->filename; + toUrlPath($result); + $result = trim($result, "/"); } return $result; } - - public function init_clean() { - $this->identifier = null; - $this->type = null; - $this->href = null; - $this->base = null; - $this->metadata = array(); - $this->dependency = array(); - $this->identifierref = null; - $this->persiststate = null; - $this->filename = ''; - $this->files = array(); - $this->isempty = true; + $this->identifier = null; + $this->type = null; + $this->href = null; + $this->base = null; + $this->metadata = array(); + $this->dependency = array(); + $this->identifierref = null; + $this->persiststate = null; + $this->filename = ''; + $this->files = array(); + $this->isempty = true; } - public function init_empty_new() { - $this->identifier = cc_helpers::uuidgen('I_', '_R'); - $this->type = null; - $this->href = null; - $this->persiststate = null; - $this->filename = null; - $this->isempty = false; - $this->identifierref = null; + $this->identifier = cc_helpers::uuidgen('I_', '_R'); + $this->type = null; + $this->href = null; + $this->persiststate = null; + $this->filename = null; + $this->isempty = false; + $this->identifierref = null; } - public function get_manifestroot(){ + public function get_manifestroot() { return $this->manifestroot; } - } \ No newline at end of file diff --git a/backup/cc/cc_lib/cc_utils.php b/backup/cc/cc_lib/cc_utils.php index 142dc17c4e4..4ca4f370765 100644 --- a/backup/cc/cc_lib/cc_utils.php +++ b/backup/cc/cc_lib/cc_utils.php @@ -15,13 +15,13 @@ // along with Moodle. If not, see . /** -* @package backup-convert -* @subpackage cc-library -* @copyright 2011 Darko Miletic -* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later -*/ + * @package backup-convert + * @subpackage cc-library + * @copyright 2011 Darko Miletic + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ -require_once 'xmlbase.php'; +require_once('xmlbase.php'); /** * @@ -32,8 +32,8 @@ require_once 'xmlbase.php'; abstract class cc_helpers { /** - * * Checks extension of the supplied filename + * * @param string $filename */ public static function is_html($filename) { @@ -42,7 +42,6 @@ abstract class cc_helpers { } /** - * * Generates unique identifier * @param string $prefix * @param string $suffix @@ -50,17 +49,16 @@ abstract class cc_helpers { */ public static function uuidgen($prefix = '', $suffix = '', $uppercase = true) { $uuid = trim(sprintf('%s%04x%04x%s', $prefix, mt_rand(0, 65535), mt_rand(0, 65535), $suffix)); - $result = $uppercase ? strtoupper($uuid) : strtolower($uuid) ; + $result = $uppercase ? strtoupper($uuid) : strtolower($uuid); return $result; } /** - * * Creates new folder with random name * @param string $where * @param string $prefix * @param string $suffix - * @return mixed - directory short name or false in case of faliure + * @return mixed - directory short name or false in case of failure */ public static function randomdir($where, $prefix = '', $suffix = '') { global $CFG; @@ -145,12 +143,12 @@ abstract class cc_helpers { $type = $mfile->nodeValue('mimetype', $node); $depfiles[$filepath.$filename] = array( $location, ($mainfile == 1), - strtolower(str_replace(' ', '_',$filename)), + strtolower(str_replace(' ', '_', $filename)), $type, $source, $author, $license, - strtolower(str_replace(' ', '_',$filepath))); + strtolower(str_replace(' ', '_', $filepath))); } return $depfiles; @@ -210,23 +208,21 @@ abstract class cc_helpers { * @param boolean $allinone * @throws RuntimeException */ - public static function handle_static_content(cc_i_manifest &$manifest, $packageroot, $contextid, $outdir, $allinone = true){ - cc_helpers::add_files($manifest, $packageroot, $outdir, $allinone); + public static function handle_static_content(cc_i_manifest &$manifest, $packageroot, $contextid, $outdir, $allinone = true) { + self::add_files($manifest, $packageroot, $outdir, $allinone); return pkg_static_resources::instance()->get_values(); } - public static function handle_resource_content(cc_i_manifest &$manifest, $packageroot, $contextid, $outdir, $allinone = true){ + public static function handle_resource_content(cc_i_manifest &$manifest, $packageroot, $contextid, $outdir, $allinone = true) { $result = array(); - cc_helpers::add_files($manifest, $packageroot, $outdir, $allinone); - $files = cc_helpers::embedded_mapping($packageroot, $contextid); - //$rdir = $allinone ? new cc_resource_location($outdir) : null; + self::add_files($manifest, $packageroot, $outdir, $allinone); + $files = self::embedded_mapping($packageroot, $contextid); $rootnode = null; $rootvals = null; $depfiles = array(); $depres = array(); $flocation = null; foreach ($files as $virtual => $values) { - $clean_filename = $values[2]; $vals = pkg_static_resources::instance()->get_identifier($virtual); $resource = $vals[3]; $identifier = $resource->identifier; @@ -250,17 +246,16 @@ abstract class cc_helpers { return $result; } - public static function process_linked_files($content, cc_i_manifest &$manifest, $packageroot, $contextid, $outdir, $webcontent = false) { - /** - - detect all embedded files - - locate their physical counterparts in moodle 2 backup - - copy all files in the cc package stripping any spaces and using inly lowercase letters - - add those files as resources of the type webcontent to the manifest - - replace the links to the resourcse using $IMS-CC-FILEBASE$ and their new locations - - cc_resource has array of files and array of dependencies - - most likely we would need to add all files as independent resources and than - attach them all as dependencies to the forum tag - */ + public static function process_linked_files($content, cc_i_manifest &$manifest, $packageroot, + $contextid, $outdir, $webcontent = false) { + // Detect all embedded files + // locate their physical counterparts in moodle 2 backup + // copy all files in the cc package stripping any spaces and using only lowercase letters + // add those files as resources of the type webcontent to the manifest + // replace the links to the resource using $IMS-CC-FILEBASE$ and their new locations + // cc_resource has array of files and array of dependencies + // most likely we would need to add all files as independent resources and than + // attach them all as dependencies to the forum tag. $lfiles = self::embedded_files($content); $text = $content; $deps = array(); @@ -272,12 +267,12 @@ abstract class cc_helpers { $replaceprefix = $webcontent ? '' : '$IMS-CC-FILEBASE$'; foreach ($lfiles as $lfile) { if (isset($files[$lfile])) { - $filename = str_replace('%2F', '/',rawurlencode($lfile)); + $filename = str_replace('%2F', '/', rawurlencode($lfile)); $content = str_replace('@@PLUGINFILE@@'.$filename, $replaceprefix.'../'.$files[$lfile][1], $content); - //for the legacy stuff - $content = str_replace('$@FILEPHP@$'.str_replace('/','$@SLASH@$',$filename), + // For the legacy stuff. + $content = str_replace('$@FILEPHP@$'.str_replace('/', '$@SLASH@$', $filename), $replaceprefix.'../'.$files[$lfile][1], $content); $deps[] = $files[$lfile][0]; @@ -380,8 +375,11 @@ class pkg_static_resources { */ private static $instance = null; - private function __clone() {} - private function __construct() {} + private function __clone() { + } + + private function __construct() { + } /** * @return pkg_static_resources @@ -418,15 +416,15 @@ class pkg_static_resources { public function reset() { $this->values = array(); - $this->finished = false ; + $this->finished = false; } } class pkg_resource_dependencies { /** - * @var array - */ + * @var array + */ private $values = array(); /** diff --git a/backup/cc/cc_lib/cc_version1.php b/backup/cc/cc_lib/cc_version1.php index f7854d33c58..f68cb58e535 100644 --- a/backup/cc/cc_lib/cc_version1.php +++ b/backup/cc/cc_lib/cc_version1.php @@ -15,16 +15,15 @@ // along with Moodle. If not, see . /** -* @package backup-convert -* @subpackage cc-library -* @copyright 2011 Darko Miletic -* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later -*/ - -require_once 'cc_utils.php'; -require_once 'cc_version_base.php'; -require_once 'cc_organization.php'; + * @package backup-convert + * @subpackage cc-library + * @copyright 2011 Darko Miletic + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +require_once('cc_utils.php'); +require_once('cc_version_base.php'); +require_once('cc_organization.php'); /** * Version 1 class of Common Cartridge @@ -63,79 +62,79 @@ class cc_version1 extends cc_version_base { 'xsi' => 'http://www.w3.org/2001/XMLSchema-instance' ); - $this->ccnsnames = array('imscc' => 'http://www.imsglobal.org/profile/cc/ccv1p0/derived_schema/imscp_v1p2_localised.xsd' , - 'lom' => 'http://www.imsglobal.org/profile/cc/ccv1p0/derived_schema/domainProfile_2/lomLoose_localised.xsd' , - 'lomimscc' => 'http://www.imsglobal.org/profile/cc/ccv1p0/derived_schema/domainProfile_1/lomLoose_localised.xsd', - 'voc' => 'http://www.imsglobal.org/profile/cc/ccv1p0/derived_schema/domainProfile_2/vocab/loose.xsd' - ); + $this->ccnsnames = array( + 'imscc' => 'http://www.imsglobal.org/profile/cc/ccv1p0/derived_schema/imscp_v1p2_localised.xsd', + 'lom' => 'http://www.imsglobal.org/profile/cc/ccv1p0/derived_schema/domainProfile_2/lomLoose_localised.xsd', + 'lomimscc' => 'http://www.imsglobal.org/profile/cc/ccv1p0/derived_schema/domainProfile_1/lomLoose_localised.xsd', + 'voc' => 'http://www.imsglobal.org/profile/cc/ccv1p0/derived_schema/domainProfile_2/vocab/loose.xsd' + ); $this->ccversion = '1.0.0'; $this->camversion = '1.0.0'; $this->_generator = 'Moodle 2 Common Cartridge generator'; } - protected function on_create(DOMDocument &$doc, $rootmanifestnode=null,$nmanifestID=null) { - $doc->formatOutput = true; - $doc->preserveWhiteSpace = true; + protected function on_create(DOMDocument &$doc, $rootmanifestnode = null, $nmanifestID = null) { + $doc->formatOutput = true; + $doc->preserveWhiteSpace = true; - $this->manifestID = is_null($nmanifestID) ? cc_helpers::uuidgen('M_') : $nmanifestID; - $mUUID = $doc->createAttribute('identifier'); - $mUUID->nodeValue = $this->manifestID; + $this->manifestID = is_null($nmanifestID) ? cc_helpers::uuidgen('M_') : $nmanifestID; + $mUUID = $doc->createAttribute('identifier'); + $mUUID->nodeValue = $this->manifestID; - if (is_null($rootmanifestnode)) { - if (!empty($this->_generator)) { - $comment = $doc->createComment($this->_generator); - $doc->appendChild($comment); - } + if (is_null($rootmanifestnode)) { + if (!empty($this->_generator)) { + $comment = $doc->createComment($this->_generator); + $doc->appendChild($comment); + } - $rootel = $doc->createElementNS($this->ccnamespaces['imscc'],'manifest'); - $rootel->appendChild($mUUID); - $doc->appendChild($rootel); + $rootel = $doc->createElementNS($this->ccnamespaces['imscc'], 'manifest'); + $rootel->appendChild($mUUID); + $doc->appendChild($rootel); - //add all namespaces - foreach ($this->ccnamespaces as $key => $value) { - $dummy_attr = $key.":dummy"; - $doc->createAttributeNS($value,$dummy_attr); - } + // Add all namespaces. + foreach ($this->ccnamespaces as $key => $value) { + $dummy_attr = $key.":dummy"; + $doc->createAttributeNS($value, $dummy_attr); + } - // add location of schemas - $schemaLocation=''; - foreach ($this->ccnsnames as $key => $value) { - $vt = empty($schemaLocation) ? '' : ' '; - $schemaLocation .= $vt.$this->ccnamespaces[$key].' '.$value; - } - $aSchemaLoc = $doc->createAttributeNS($this->ccnamespaces['xsi'],'xsi:schemaLocation'); - $aSchemaLoc->nodeValue=$schemaLocation; - $rootel->appendChild($aSchemaLoc); + // Add location of schemas. + $schemaLocation = ''; + foreach ($this->ccnsnames as $key => $value) { + $vt = empty($schemaLocation) ? '' : ' '; + $schemaLocation .= $vt.$this->ccnamespaces[$key].' '.$value; + } + $aSchemaLoc = $doc->createAttributeNS($this->ccnamespaces['xsi'], 'xsi:schemaLocation'); + $aSchemaLoc->nodeValue = $schemaLocation; + $rootel->appendChild($aSchemaLoc); - } else { - $rootel = $doc->createElementNS($this->ccnamespaces['imscc'],'imscc:manifest'); - $rootel->appendChild($mUUID); - } + } else { + $rootel = $doc->createElementNS($this->ccnamespaces['imscc'], 'imscc:manifest'); + $rootel->appendChild($mUUID); + } - $metadata = $doc->createElementNS($this->ccnamespaces['imscc'],'metadata'); - $schema = $doc->createElementNS($this->ccnamespaces['imscc'],'schema','IMS Common Cartridge'); - $schemaversion = $doc->createElementNS($this->ccnamespaces['imscc'],'schemaversion',$this->ccversion); + $metadata = $doc->createElementNS($this->ccnamespaces['imscc'], 'metadata'); + $schema = $doc->createElementNS($this->ccnamespaces['imscc'], 'schema', 'IMS Common Cartridge'); + $schemaversion = $doc->createElementNS($this->ccnamespaces['imscc'], 'schemaversion', $this->ccversion); - $metadata->appendChild($schema); - $metadata->appendChild($schemaversion); - $rootel->appendChild($metadata); + $metadata->appendChild($schema); + $metadata->appendChild($schemaversion); + $rootel->appendChild($metadata); - if (!is_null($rootmanifestnode)) { - $rootmanifestnode->appendChild($rootel); - } + if (!is_null($rootmanifestnode)) { + $rootmanifestnode->appendChild($rootel); + } - $organizations = $doc->createElementNS($this->ccnamespaces['imscc'],'organizations'); - $rootel->appendChild($organizations); - $resources = $doc->createElementNS($this->ccnamespaces['imscc'],'resources'); - $rootel->appendChild($resources); + $organizations = $doc->createElementNS($this->ccnamespaces['imscc'], 'organizations'); + $rootel->appendChild($organizations); + $resources = $doc->createElementNS($this->ccnamespaces['imscc'], 'resources'); + $rootel->appendChild($resources); - return true; + return true; } - protected function update_attribute(DOMDocument &$doc, $attrname, $attrvalue, DOMElement &$node) { $busenew = (is_object($node) && $node->hasAttribute($attrname)); $nResult = null; @@ -151,14 +150,14 @@ class cc_version1 extends cc_version_base { return $nResult; } - protected function update_attribute_ns(DOMDocument &$doc, $attrname, $attrnamespace,$attrvalue, DOMElement &$node) { $busenew = (is_object($node) && $node->hasAttributeNS($attrnamespace, $attrname)); $nResult = null; if (!$busenew && is_null($attrvalue)) { $node->removeAttributeNS($attrnamespace, $attrname); } else { - $nResult = $busenew ? $node->getAttributeNodeNS($attrnamespace, $attrname) : $doc->createAttributeNS($attrnamespace, $attrname); + $nResult = $busenew ? $node->getAttributeNodeNS($attrnamespace, $attrname) : + $doc->createAttributeNS($attrnamespace, $attrname); $nResult->nodeValue = $attrvalue; if (!$busenew) { $node->appendChild($nResult); @@ -167,21 +166,19 @@ class cc_version1 extends cc_version_base { return $nResult; } - protected function get_child_node(DOMDocument &$doc, $itemname, DOMElement &$node) { $nlist = $node->getElementsByTagName($itemname); $item = is_object($nlist) && ($nlist->length > 0) ? $nlist->item(0) : null; return $item; } - protected function update_child_item(DOMDocument &$doc, $itemname, $itemvalue, DOMElement &$node, $attrtostore=null) { - $tnode = $this->get_child_node($doc,'title',$node); + $tnode = $this->get_child_node($doc, 'title', $node); $usenew = is_null($tnode); $tnode = $usenew ? $doc->createElementNS($this->ccnamespaces['imscc'], $itemname) : $tnode; if (!is_null($attrtostore)) { foreach ($attrtostore as $key => $value) { - $this->update_attribute($doc,$key,$value,$tnode); + $this->update_attribute($doc, $key, $value, $tnode); } } $tnode->nodeValue = $itemvalue; @@ -190,7 +187,6 @@ class cc_version1 extends cc_version_base { } } - protected function update_items($items, DOMDocument &$doc, DOMElement &$xmlnode) { foreach ($items as $key => $item) { $itemnode = $doc->createElementNS($this->ccnamespaces['imscc'], 'item'); @@ -210,7 +206,6 @@ class cc_version1 extends cc_version_base { } } - /** * Create a Resource (How to) * @@ -222,23 +217,23 @@ class cc_version1 extends cc_version_base { protected function create_resource(cc_i_resource &$res, DOMDocument &$doc, $xmlnode=null) { $usenew = is_object($xmlnode); $dnode = $usenew ? $xmlnode : $doc->createElementNS($this->ccnamespaces['imscc'], "resource"); - $this->update_attribute($doc,'identifier',$res->identifier,$dnode); - $this->update_attribute($doc,'type' ,$res->type ,$dnode); - !is_null($res->href) ? $this->update_attribute($doc,'href',$res->href,$dnode): null; - $this->update_attribute($doc,'base' ,$res->base ,$dnode); + $this->update_attribute($doc, 'identifier', $res->identifier, $dnode); + $this->update_attribute($doc, 'type', $res->type, $dnode); + !is_null($res->href) ? $this->update_attribute($doc, 'href', $res->href, $dnode) : null; + $this->update_attribute($doc, 'base', $res->base, $dnode); foreach ($res->files as $file) { - $nd = $doc->createElementNS($this->ccnamespaces['imscc'],'file'); + $nd = $doc->createElementNS($this->ccnamespaces['imscc'], 'file'); $ndatt = $doc->createAttribute('href'); $ndatt->nodeValue = $file; $nd->appendChild($ndatt); $dnode->appendChild($nd); } - $this->resources[$res->identifier] = $res; + $this->resources[$res->identifier] = $res; $this->resources_ind[$res->files[0]] = $res->identifier; - foreach ($res->dependency as $dependency){ - $nd = $doc->createElementNS($this->ccnamespaces['imscc'],'dependency'); + foreach ($res->dependency as $dependency) { + $nd = $doc->createElementNS($this->ccnamespaces['imscc'], 'dependency'); $ndatt = $doc->createAttribute('identifierref'); $ndatt->nodeValue = $dependency; $nd->appendChild($ndatt); @@ -248,8 +243,6 @@ class cc_version1 extends cc_version_base { return $dnode; } - - /** * Create an Item Folder (How To) * @@ -257,25 +250,22 @@ class cc_version1 extends cc_version_base { * @param DOMDocument $doc * @param DOMElement $xmlnode */ - protected function create_item_folder (cc_i_organization &$org, DOMDocument &$doc, DOMElement &$xmlnode=null){ + protected function create_item_folder(cc_i_organization &$org, DOMDocument &$doc, DOMElement &$xmlnode = null) { - $itemfoldernode = $doc->createElementNS($this->ccnamespaces['imscc'],'item'); - $this->update_attribute($doc,'identifier', "root", $itemfoldernode); + $itemfoldernode = $doc->createElementNS($this->ccnamespaces['imscc'], 'item'); + $this->update_attribute($doc, 'identifier', "root", $itemfoldernode); - if ($org->has_items()) { - $this->update_items($org->itemlist, $doc, $itemfoldernode); - } - if (is_null($this->organizations)) { - $this->organizations = array(); - } - $this->organizations[$org->identifier] = $org; + if ($org->has_items()) { + $this->update_items($org->itemlist, $doc, $itemfoldernode); + } + if (is_null($this->organizations)) { + $this->organizations = array(); + } + $this->organizations[$org->identifier] = $org; - $xmlnode->appendChild($itemfoldernode); + $xmlnode->appendChild($itemfoldernode); } - - - /** * Create an Organization (How To) * @@ -284,21 +274,18 @@ class cc_version1 extends cc_version_base { * @param object $xmlnode * @return DOMNode */ - protected function create_organization (cc_i_organization &$org, DOMDocument &$doc, $xmlnode=null){ + protected function create_organization(cc_i_organization &$org, DOMDocument &$doc, $xmlnode = null) { $usenew = is_object($xmlnode); $dnode = $usenew ? $xmlnode : $doc->createElementNS($this->ccnamespaces['imscc'], "organization"); - $this->update_attribute($doc,'identifier' ,$org->identifier,$dnode); - $this->update_attribute($doc,'structure' ,$org->structure ,$dnode); + $this->update_attribute($doc, 'identifier', $org->identifier, $dnode); + $this->update_attribute($doc, 'structure', $org->structure, $dnode); - $this->create_item_folder($org,$doc,$dnode); + $this->create_item_folder($org, $doc, $dnode); return $dnode; } - - - /** * Create Metadata For Manifest (How To) * @@ -307,28 +294,26 @@ class cc_version1 extends cc_version_base { * @param object $xmlnode * @return DOMNode */ - protected function create_metadata_manifest (cc_i_metadata_manifest $met,DOMDocument &$doc,$xmlnode=null) { + protected function create_metadata_manifest(cc_i_metadata_manifest $met, DOMDocument &$doc, $xmlnode = null) { - $dnode = $doc->createElementNS($this->ccnamespaces['lomimscc'], "lom"); + $dnode = $doc->createElementNS($this->ccnamespaces['lomimscc'], "lom"); if (!empty($xmlnode)) { $xmlnode->appendChild($dnode); } - $dnodegeneral = empty($met->arraygeneral ) ? null : $this->create_metadata_general ($met, $doc, $xmlnode); - $dnodetechnical = empty($met->arraytech ) ? null : $this->create_metadata_technical($met, $doc, $xmlnode); - $dnoderights = empty($met->arrayrights ) ? null : $this->create_metadata_rights ($met, $doc, $xmlnode); + $dnodegeneral = empty($met->arraygeneral) ? null : $this->create_metadata_general($met, $doc, $xmlnode); + $dnodetechnical = empty($met->arraytech) ? null : $this->create_metadata_technical($met, $doc, $xmlnode); + $dnoderights = empty($met->arrayrights) ? null : $this->create_metadata_rights($met, $doc, $xmlnode); $dnodelifecycle = empty($met->arraylifecycle) ? null : $this->create_metadata_lifecycle($met, $doc, $xmlnode); - !is_null($dnodegeneral)?$dnode->appendChild($dnodegeneral):null; - !is_null($dnodetechnical)?$dnode->appendChild($dnodetechnical):null; - !is_null($dnoderights)?$dnode->appendChild($dnoderights):null; - !is_null($dnodelifecycle)?$dnode->appendChild($dnodelifecycle):null; + !is_null($dnodegeneral) ? $dnode->appendChild($dnodegeneral) : null; + !is_null($dnodetechnical) ? $dnode->appendChild($dnodetechnical) : null; + !is_null($dnoderights) ? $dnode->appendChild($dnoderights) : null; + !is_null($dnodelifecycle) ? $dnode->appendChild($dnodelifecycle) : null; return $dnode; } - - /** * Create Metadata For Resource (How To) * @@ -337,19 +322,16 @@ class cc_version1 extends cc_version_base { * @param object $xmlnode * @return DOMNode */ - protected function create_metadata_resource (cc_i_metadata_resource $met,DOMDocument &$doc,$xmlnode=null) { + protected function create_metadata_resource(cc_i_metadata_resource $met, DOMDocument &$doc, $xmlnode = null) { $dnode = $doc->createElementNS($this->ccnamespaces['lom'], "lom"); - !empty($xmlnode)? $xmlnode->appendChild($dnode):null; - !empty($met->arrayeducational) ? $this->create_metadata_educational($met,$doc,$dnode):null; + !empty($xmlnode) ? $xmlnode->appendChild($dnode) : null; + !empty($met->arrayeducational) ? $this->create_metadata_educational($met, $doc, $dnode) : null; return $dnode; } - - - /** * Create Metadata For File (How To) * @@ -358,19 +340,16 @@ class cc_version1 extends cc_version_base { * @param Object $xmlnode * @return DOMNode */ - protected function create_metadata_file (cc_i_metadata_file $met,DOMDocument &$doc,$xmlnode=null) { + protected function create_metadata_file(cc_i_metadata_file $met, DOMDocument &$doc, $xmlnode = null) { $dnode = $doc->createElementNS($this->ccnamespaces['lom'], "lom"); - !empty($xmlnode)? $xmlnode->appendChild($dnode):null; - !empty($met->arrayeducational) ? $this->create_metadata_educational($met,$doc,$dnode):null; + !empty($xmlnode) ? $xmlnode->appendChild($dnode) : null; + !empty($met->arrayeducational) ? $this->create_metadata_educational($met, $doc, $dnode) : null; return $dnode; } - - - /** * Create General Metadata (How To) * @@ -379,48 +358,43 @@ class cc_version1 extends cc_version_base { * @param object $xmlnode * @return DOMNode */ - protected function create_metadata_general($met,DOMDocument &$doc,$xmlnode){ - ($xmlnode); - $nd = $doc->createElementNS($this->ccnamespaces['lomimscc'],'general'); + protected function create_metadata_general($met, DOMDocument &$doc, $xmlnode) { + $nd = $doc->createElementNS($this->ccnamespaces['lomimscc'], 'general'); foreach ($met->arraygeneral as $name => $value) { - !is_array($value)?$value =array($value):null; - foreach ($value as $k => $v){ - ($k); - if ($name != 'language' && $name != 'catalog' && $name != 'entry'){ - $nd2 = $doc->createElementNS($this->ccnamespaces['lomimscc'],$name); - $nd3 = $doc->createElementNS($this->ccnamespaces['lomimscc'],'string',$v[1]); + !is_array($value) ? $value = array($value) : null; + foreach ($value as $v) { + if ($name != 'language' && $name != 'catalog' && $name != 'entry') { + $nd2 = $doc->createElementNS($this->ccnamespaces['lomimscc'], $name); + $nd3 = $doc->createElementNS($this->ccnamespaces['lomimscc'], 'string', $v[1]); $ndatt = $doc->createAttribute('language'); $ndatt->nodeValue = $v[0]; $nd3->appendChild($ndatt); $nd2->appendChild($nd3); $nd->appendChild($nd2); - }else{ - if ($name == 'language'){ - $nd2 = $doc->createElementNS($this->ccnamespaces['lomimscc'],$name,$v[0]); + } else { + if ($name == 'language') { + $nd2 = $doc->createElementNS($this->ccnamespaces['lomimscc'], $name, $v[0]); $nd->appendChild($nd2); } } } } - if (!empty($met->arraygeneral['catalog']) || !empty($met->arraygeneral['entry'])){ - $nd2 = $doc->createElementNS($this->ccnamespaces['lomimscc'],'identifier'); + if (!empty($met->arraygeneral['catalog']) || !empty($met->arraygeneral['entry'])) { + $nd2 = $doc->createElementNS($this->ccnamespaces['lomimscc'], 'identifier'); $nd->appendChild($nd2); - if (!empty($met->arraygeneral['catalog'])){ - $nd3 = $doc->createElementNS($this->ccnamespaces['lomimscc'],'catalog',$met->arraygeneral['catalog'][0][0]); + if (!empty($met->arraygeneral['catalog'])) { + $nd3 = $doc->createElementNS($this->ccnamespaces['lomimscc'], 'catalog', $met->arraygeneral['catalog'][0][0]); $nd2->appendChild($nd3); } - if (!empty($met->arraygeneral['entry'])){ - $nd4 = $doc->createElementNS($this->ccnamespaces['lomimscc'],'entry',$met->arraygeneral['entry'][0][0]); + if (!empty($met->arraygeneral['entry'])) { + $nd4 = $doc->createElementNS($this->ccnamespaces['lomimscc'], 'entry', $met->arraygeneral['entry'][0][0]); $nd2->appendChild($nd4); } } return $nd; } - - - /** * Create Technical Metadata (How To) * @@ -429,26 +403,21 @@ class cc_version1 extends cc_version_base { * @param object $xmlnode * @return DOMNode */ - protected function create_metadata_technical($met,DOMDocument &$doc,$xmlnode){ - ($xmlnode); - $nd = $doc->createElementNS($this->ccnamespaces['lomimscc'],'technical'); + protected function create_metadata_technical($met, DOMDocument &$doc, $xmlnode) { + $nd = $doc->createElementNS($this->ccnamespaces['lomimscc'], 'technical'); $xmlnode->appendChild($nd); foreach ($met->arraytech as $name => $value) { - ($name); - !is_array($value)?$value =array($value):null; - foreach ($value as $k => $v){ - ($k); - $nd2 = $doc->createElementNS($this->ccnamespaces['lomimscc'],$name,$v[0]); - $nd->appendChild($nd2); + !is_array($value) ? $value = array($value) : null; + foreach ($value as $v) { + $nd2 = $doc->createElementNS($this->ccnamespaces['lomimscc'], $name, $v[0]); + $nd->appendChild($nd2); } } return $nd; } - - /** * Create Rights Metadata (How To) * @@ -457,26 +426,24 @@ class cc_version1 extends cc_version_base { * @param object $xmlnode * @return DOMNode */ - protected function create_metadata_rights($met,DOMDocument &$doc,$xmlnode){ - ($xmlnode); + protected function create_metadata_rights($met, DOMDocument &$doc, $xmlnode) { - $nd = $doc->createElementNS($this->ccnamespaces['lomimscc'],'rights'); + $nd = $doc->createElementNS($this->ccnamespaces['lomimscc'], 'rights'); foreach ($met->arrayrights as $name => $value) { - !is_array($value)?$value =array($value):null; - foreach ($value as $k => $v){ - ($k); - if ($name == 'description'){ - $nd2 = $doc->createElementNS($this->ccnamespaces['lomimscc'],$name); - $nd3 = $doc->createElementNS($this->ccnamespaces['lomimscc'],'string',$v[1]); + !is_array($value) ? $value = array($value) : null; + foreach ($value as $v) { + if ($name == 'description') { + $nd2 = $doc->createElementNS($this->ccnamespaces['lomimscc'], $name); + $nd3 = $doc->createElementNS($this->ccnamespaces['lomimscc'], 'string', $v[1]); $ndatt = $doc->createAttribute('language'); $ndatt->nodeValue = $v[0]; $nd3->appendChild($ndatt); $nd2->appendChild($nd3); $nd->appendChild($nd2); - }elseif ($name == 'copyrightAndOtherRestrictions' || $name == 'cost'){ - $nd2 = $doc->createElementNS($this->ccnamespaces['lomimscc'],$name); - $nd3 = $doc->createElementNS($this->ccnamespaces['lomimscc'],'value',$v[0]); + } else if ($name == 'copyrightAndOtherRestrictions' || $name == 'cost') { + $nd2 = $doc->createElementNS($this->ccnamespaces['lomimscc'], $name); + $nd3 = $doc->createElementNS($this->ccnamespaces['lomimscc'], 'value', $v[0]); $nd2->appendChild($nd3); $nd->appendChild($nd2); } @@ -485,44 +452,38 @@ class cc_version1 extends cc_version_base { return $nd; } - - - /** - * Create LifeCyle Metadata (How To) + * Create Lifecycle Metadata (How To) * * @param object $met * @param DOMDocument $doc * @param object $xmlnode * @return DOMNode */ - protected function create_metadata_lifecycle($met,DOMDocument &$doc,$xmlnode){ - ($xmlnode); + protected function create_metadata_lifecycle($met, DOMDocument &$doc, $xmlnode) { - $nd = $doc->createElementNS($this->ccnamespaces['lomimscc'],'lifeCycle'); - $nd2= $doc->createElementNS($this->ccnamespaces['lomimscc'],'contribute'); + $nd = $doc->createElementNS($this->ccnamespaces['lomimscc'], 'lifeCycle'); + $nd2 = $doc->createElementNS($this->ccnamespaces['lomimscc'], 'contribute'); - - $nd->appendChild ($nd2); - $xmlnode->appendChild ($nd); + $nd->appendChild($nd2); + $xmlnode->appendChild($nd); foreach ($met->arraylifecycle as $name => $value) { - !is_array($value)?$value =array($value):null; - foreach ($value as $k => $v){ - ($k); - if ($name == 'role'){ - $nd3 = $doc->createElementNS($this->ccnamespaces['lomimscc'],$name); + !is_array($value) ? $value = array($value) : null; + foreach ($value as $v) { + if ($name == 'role') { + $nd3 = $doc->createElementNS($this->ccnamespaces['lomimscc'], $name); $nd2->appendChild($nd3); - $nd4 = $doc->createElementNS($this->ccnamespaces['lomimscc'],'value',$v[0]); + $nd4 = $doc->createElementNS($this->ccnamespaces['lomimscc'], 'value', $v[0]); $nd3->appendChild($nd4); - }else{ - if ($name == 'date'){ - $nd3 = $doc->createElementNS($this->ccnamespaces['lomimscc'],$name); + } else { + if ($name == 'date') { + $nd3 = $doc->createElementNS($this->ccnamespaces['lomimscc'], $name); $nd2->appendChild($nd3); - $nd4 = $doc->createElementNS($this->ccnamespaces['lomimscc'],'dateTime',$v[0]); + $nd4 = $doc->createElementNS($this->ccnamespaces['lomimscc'], 'dateTime', $v[0]); $nd3->appendChild($nd4); - }else{ - $nd3 = $doc->createElementNS($this->ccnamespaces['lomimscc'],$name,$v[0]); + } else { + $nd3 = $doc->createElementNS($this->ccnamespaces['lomimscc'], $name, $v[0]); $nd2->appendChild($nd3); } } @@ -531,9 +492,6 @@ class cc_version1 extends cc_version_base { return $nd; } - - - /** * Create Education Metadata (How To) * @@ -542,24 +500,22 @@ class cc_version1 extends cc_version_base { * @param object $xmlnode * @return DOMNode */ - public function create_metadata_educational ($met,DOMDocument &$doc, $xmlnode){ - $nd = $doc->createElementNS($this->ccnamespaces['lom'],'educational'); - $nd2 = $doc->createElementNS($this->ccnamespaces['lom'],'intendedEndUserRole'); - $nd3 = $doc->createElementNS($this->ccnamespaces['voc'],'vocabulary'); + public function create_metadata_educational($met, DOMDocument &$doc, $xmlnode) { + $nd = $doc->createElementNS($this->ccnamespaces['lom'], 'educational'); + $nd2 = $doc->createElementNS($this->ccnamespaces['lom'], 'intendedEndUserRole'); + $nd3 = $doc->createElementNS($this->ccnamespaces['voc'], 'vocabulary'); $xmlnode->appendChild($nd); $nd->appendChild($nd2); $nd2->appendChild($nd3); foreach ($met->arrayeducational as $name => $value) { - !is_array($value)?$value =array($value):null; - foreach ($value as $k => $v){ - ($k); - $nd4 = $doc->createElementNS($this->ccnamespaces['voc'],$name,$v[0]); + !is_array($value) ? $value = array($value) : null; + foreach ($value as $v) { + $nd4 = $doc->createElementNS($this->ccnamespaces['voc'], $name, $v[0]); $nd3->appendChild($nd4); } } return $nd; } - } \ No newline at end of file diff --git a/backup/cc/cc_lib/cc_version11.php b/backup/cc/cc_lib/cc_version11.php index d07c6ea34ed..c65431b357a 100644 --- a/backup/cc/cc_lib/cc_version11.php +++ b/backup/cc/cc_lib/cc_version11.php @@ -15,14 +15,13 @@ // along with Moodle. If not, see . /** -* @package backup-convert -* @subpackage cc-library -* @copyright 2011 Darko Miletic -* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later -*/ - -require_once 'cc_version1.php'; + * @package backup-convert + * @subpackage cc-library + * @copyright 2011 Darko Miletic + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +require_once('cc_version1.php'); /** * Version 1.1 class of Common Cartridge @@ -46,11 +45,11 @@ class cc_version11 extends cc_version1 { self::basiclti); /** - * Validate if the type are valid or not - * - * @param string $type - * @return bool - */ + * Validate if the type are valid or not + * + * @param string $type + * @return bool + */ public function valid($type) { return in_array($type, self::$checker); } @@ -78,9 +77,8 @@ class cc_version11 extends cc_version1 { $this->update_attribute($doc, 'identifier' , $key , $itemnode); $this->update_attribute($doc, 'identifierref', $item->identifierref, $itemnode); if (!is_null($item->title)) { - $titlenode = $doc->createElementNS($this->ccnamespaces['imscc'], - 'title', - $item->title); + $titlenode = $doc->createElementNS($this->ccnamespaces['imscc'], 'title'); + $titlenode->appendChild(new DOMText($item->title)); $itemnode->appendChild($titlenode); } if ($item->has_child_items()) { @@ -91,25 +89,25 @@ class cc_version11 extends cc_version1 { } /** - * Create Education Metadata (How To) - * - * @param object $met - * @param DOMDocument $doc - * @param object $xmlnode - * @return DOMNode - */ - public function create_metadata_educational ($met, DOMDocument &$doc, $xmlnode){ - $metadata = $doc->createElementNS($this->ccnamespaces['imscc'] ,'metadata'); + * Create Education Metadata (How To) + * + * @param object $met + * @param DOMDocument $doc + * @param object $xmlnode + * @return DOMNode + */ + public function create_metadata_educational($met, DOMDocument &$doc, $xmlnode) { + $metadata = $doc->createElementNS($this->ccnamespaces['imscc'], 'metadata'); $xmlnode->insertBefore($metadata, $xmlnode->firstChild); - $lom = $doc->createElementNS($this->ccnamespaces['lom'] ,'lom'); + $lom = $doc->createElementNS($this->ccnamespaces['lom'], 'lom'); $metadata->appendChild($lom); - $educational = $doc->createElementNS($this->ccnamespaces['lom'] ,'educational'); + $educational = $doc->createElementNS($this->ccnamespaces['lom'], 'educational'); $lom->appendChild($educational); - foreach ($met->arrayeducational as $name => $value) { - !is_array($value)?$value =array($value):null; - foreach ($value as $v){ - $userrole = $doc->createElementNS($this->ccnamespaces['lom'],'intendedEndUserRole'); + foreach ($met->arrayeducational as $value) { + !is_array($value) ? $value = array($value) : null; + foreach ($value as $v) { + $userrole = $doc->createElementNS($this->ccnamespaces['lom'], 'intendedEndUserRole'); $educational->appendChild($userrole); $nd4 = $doc->createElementNS($this->ccnamespaces['lom'], 'source', 'IMSGLC_CC_Rolesv1p1'); $nd5 = $doc->createElementNS($this->ccnamespaces['lom'], 'value', $v[0]); diff --git a/backup/cc/cc_lib/cc_version_base.php b/backup/cc/cc_lib/cc_version_base.php index 0c689a5e59b..5db380cf236 100644 --- a/backup/cc/cc_lib/cc_version_base.php +++ b/backup/cc/cc_lib/cc_version_base.php @@ -29,86 +29,86 @@ require_once 'cc_organization.php'; * */ abstract class cc_version_base { - protected $_generator = null; - protected $ccnamespaces = array(); - protected $isrootmanifest = false; - protected $manifestID = null; - protected $organizationid = null; - public $resources = null; - public $resources_ind = null; - protected $metadata = null; - public $organizations = null; - protected $base = null; - public $ccversion = null; - public $camversion = null; + protected $_generator = null; + protected $ccnamespaces = array(); + protected $isrootmanifest = false; + protected $manifestID = null; + protected $organizationid = null; + public $resources = null; + public $resources_ind = null; + protected $metadata = null; + public $organizations = null; + protected $base = null; + public $ccversion = null; + public $camversion = null; - abstract protected function on_create(DOMDocument &$doc,$rootmanifestnode=null,$nmanifestID=null); + abstract protected function on_create(DOMDocument &$doc, $rootmanifestnode = null, $nmanifestID = null); - abstract protected function create_metadata_manifest (cc_i_metadata_manifest $met,DOMDocument &$doc,$xmlnode=null); + abstract protected function create_metadata_manifest(cc_i_metadata_manifest $met, DOMDocument &$doc, $xmlnode = null); - abstract protected function create_metadata_resource (cc_i_metadata_resource $met,DOMDocument &$doc,$xmlnode=null); + abstract protected function create_metadata_resource(cc_i_metadata_resource $met, DOMDocument &$doc, $xmlnode = null); - abstract protected function create_metadata_file (cc_i_metadata_file $met,DOMDocument &$doc,$xmlnode=null); + abstract protected function create_metadata_file(cc_i_metadata_file $met, DOMDocument &$doc, $xmlnode = null); abstract protected function create_resource(cc_i_resource &$res, DOMDocument &$doc, $xmlnode=null); abstract protected function create_organization(cc_i_organization &$org, DOMDocument &$doc, $xmlnode=null); - public function get_cc_namespaces(){ + public function get_cc_namespaces() { return $this->ccnamespaces; } - public function create_manifest(DOMDocument &$doc,$rootmanifestnode=null){ - return $this->on_create($doc,$rootmanifestnode); + public function create_manifest(DOMDocument &$doc, $rootmanifestnode = null) { + return $this->on_create($doc, $rootmanifestnode); } public function create_resource_node(cc_i_resource &$res, DOMDocument &$doc, $xmlnode = null) { - return $this->create_resource($res,$doc,$xmlnode); + return $this->create_resource($res, $doc, $xmlnode); } - public function create_metadata_node (&$met, DOMDocument &$doc, $xmlnode = null){ - return $this->create_metadata_manifest($met,$doc,$xmlnode); + public function create_metadata_node(&$met, DOMDocument &$doc, $xmlnode = null) { + return $this->create_metadata_manifest($met, $doc, $xmlnode); } - public function create_metadata_resource_node (&$met, DOMDocument &$doc, $xmlnode = null){ - return $this->create_metadata_resource($met,$doc,$xmlnode); + public function create_metadata_resource_node(&$met, DOMDocument &$doc, $xmlnode = null) { + return $this->create_metadata_resource($met, $doc, $xmlnode); } - public function create_metadata_file_node (&$met, DOMDocument &$doc, $xmlnode = null){ - return $this->create_metadata_file($met,$doc,$xmlnode); + public function create_metadata_file_node(&$met, DOMDocument &$doc, $xmlnode = null) { + return $this->create_metadata_file($met, $doc, $xmlnode); } public function create_organization_node(cc_i_organization &$org, DOMDocument &$doc, $xmlnode = null) { - return $this->create_organization($org,$doc,$xmlnode); + return $this->create_organization($org, $doc, $xmlnode); } - public function manifestID(){ + public function manifestID() { return $this->manifestID; } - public function set_manifestID($id){ + public function set_manifestID($id) { $this->manifestID = $id; } - public function get_base(){ + public function get_base() { return $this->base; } - public function set_base($baseval){ + public function set_base($baseval) { $this->base = $baseval; } public function import_resources(DOMElement &$node, cc_i_manifest &$doc) { - if (is_null($this->resources)){ + if (is_null($this->resources)) { $this->resources = array(); } - $nlist = $node->getElementsByTagNameNS($this->ccnamespaces['imscc'],'resource'); + $nlist = $node->getElementsByTagNameNS($this->ccnamespaces['imscc'], 'resource'); if (is_object($nlist)) { foreach ($nlist as $nd) { - $sc = new cc_resource($doc,$nd); - $this->resources[$sc->identifier]=$sc; + $sc = new cc_resource($doc, $nd); + $this->resources[$sc->identifier] = $sc; } } } @@ -117,11 +117,11 @@ abstract class cc_version_base { if (is_null($this->organizations)) { $this->organizations = array(); } - $nlist = $node->getElementsByTagNameNS($this->ccnamespaces['imscc'],'organization'); + $nlist = $node->getElementsByTagNameNS($this->ccnamespaces['imscc'], 'organization'); if (is_object($nlist)) { foreach ($nlist as $nd) { - $sc = new cc_organization($nd,$doc); - $this->organizations[$sc->identifier]=$sc; + $sc = new cc_organization($nd, $doc); + $this->organizations[$sc->identifier] = $sc; } } } diff --git a/backup/cc/cc_lib/gral_lib/ccdependencyparser.php b/backup/cc/cc_lib/gral_lib/ccdependencyparser.php index e91558c3fe6..66fc55caac8 100644 --- a/backup/cc/cc_lib/gral_lib/ccdependencyparser.php +++ b/backup/cc/cc_lib/gral_lib/ccdependencyparser.php @@ -14,17 +14,15 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . -require_once dirname(__FILE__) .'/../xmlbase.php'; -require_once 'cssparser.php'; -require_once 'pathutils.php'; - - +require_once(dirname(__FILE__) .'/../xmlbase.php'); +require_once('cssparser.php'); +require_once('pathutils.php'); /** * * Older version better suited for PHP < 5.2 * @deprecated - * @param unknown_type $url + * @param mixed $url * @return boolean */ function is_url_deprecated($url) { @@ -70,66 +68,64 @@ function GetDepFiles($manifestroot, $fname, $folder, &$filenames) { } } -function GetDepFilesHTML ($manifestroot, $fname, &$filenames, &$dcx, $folder){ - $dcx->resetXpath(); - $nlist = $dcx->nodeList("//img/@src | //link/@href | //script/@src | //a[not(starts-with(@href,'#'))]/@href"); - $css_obj_array=array(); - foreach ($nlist as $nl) { - $item = $folder.$nl->nodeValue; - $path_parts = pathinfo($item); - $fname = $path_parts['basename']; - $ext = array_key_exists('extension',$path_parts) ? $path_parts['extension'] : ''; - if (!is_url($folder.$nl->nodeValue) && !is_url($nl->nodeValue)) { - $path = $folder.$nl->nodeValue; - $file = fullPath($path,"/"); - toNativePath($file); - if (file_exists($manifestroot.DIRECTORY_SEPARATOR.$file)) { - $filenames[$file]= $file; - } - } - if ($ext == 'css') { - $css = new cssparser(); - $css->Parse($dcx->filePath().$nl->nodeValue); - $css_obj_array[$item]=$css; +function GetDepFilesHTML($manifestroot, $fname, &$filenames, &$dcx, $folder) { + $dcx->resetXpath(); + $nlist = $dcx->nodeList("//img/@src | //link/@href | //script/@src | //a[not(starts-with(@href,'#'))]/@href"); + $css_obj_array = array(); + foreach ($nlist as $nl) { + $item = $folder.$nl->nodeValue; + $path_parts = pathinfo($item); + $fname = $path_parts['basename']; + $ext = array_key_exists('extension', $path_parts) ? $path_parts['extension'] : ''; + if (!is_url($folder.$nl->nodeValue) && !is_url($nl->nodeValue)) { + $path = $folder.$nl->nodeValue; + $file = fullPath($path, "/"); + toNativePath($file); + if (file_exists($manifestroot.DIRECTORY_SEPARATOR.$file)) { + $filenames[$file] = $file; } } - $nlist = $dcx->nodeList("//*/@class"); - foreach ($nlist as $nl) { - $item = $folder.$nl->nodeValue; + if ($ext == 'css') { + $css = new cssparser(); + $css->Parse($dcx->filePath().$nl->nodeValue); + $css_obj_array[$item] = $css; + } + } + $nlist = $dcx->nodeList("//*/@class"); + foreach ($nlist as $nl) { + $item = $folder.$nl->nodeValue; + foreach ($css_obj_array as $csskey => $cssobj) { + $bimg = $cssobj->Get($item, "background-image"); + $limg = $cssobj->Get($item, "list-style-image"); + $npath = pathinfo($csskey); + if ((!empty($bimg)) && ($bimg != 'none')) { + $value = stripUrl($bimg, $npath['dirname'].'/'); + $filenames[$value] = $value; + } else if ((!empty($limg)) && ($limg != 'none')) { + $value = stripUrl($limg, $npath['dirname'].'/'); + $filenames[$value] = $value; + } + } + } + $elems_to_check = array("body", "p", "ul", "h4", "a", "th"); + $do_we_have_it = array(); + foreach ($elems_to_check as $elem) { + $do_we_have_it[$elem] = ($dcx->nodeList("//".$elem)->length > 0); + } + foreach ($elems_to_check as $elem) { + if ($do_we_have_it[$elem]) { foreach ($css_obj_array as $csskey => $cssobj) { - $bimg = $cssobj->Get($item,"background-image"); - $limg = $cssobj->Get($item,"list-style-image"); + $sb = $cssobj->Get($elem, "background-image"); + $sbl = $cssobj->Get($elem, "list-style-image"); $npath = pathinfo($csskey); - if ((!empty($bimg))&& ($bimg != 'none')) { - $value = stripUrl($bimg,$npath['dirname'].'/'); + if ((!empty($sb)) && ($sb != 'none')) { + $value = stripUrl($sb, $npath['dirname'].'/'); $filenames[$value] = $value; - } else - if ((!empty($limg))&& ($limg != 'none')) { - $value = stripUrl($limg,$npath['dirname'].'/'); + } else if ((!empty($sbl)) && ($sbl != 'none')) { + $value = stripUrl($sbl, $npath['dirname'].'/'); $filenames[$value] = $value; } } } - $elems_to_check = array("body","p","ul","h4","a","th"); - $do_we_have_it = array(); - foreach ($elems_to_check as $elem) { - $do_we_have_it[$elem]=($dcx->nodeList("//".$elem)->length > 0); - } - foreach ($elems_to_check as $elem) { - if ($do_we_have_it[$elem]) { - foreach ($css_obj_array as $csskey => $cssobj) { - $sb = $cssobj->Get($elem, "background-image"); - $sbl = $cssobj->Get($elem,"list-style-image"); - $npath = pathinfo($csskey); - if ((!empty($sb)) && ($sb != 'none')) { - $value = stripUrl($sb,$npath['dirname'].'/'); - $filenames[$value] = $value; - } else - if ((!empty($sbl)) && ($sbl != 'none')) { - $value = stripUrl($sbl,$npath['dirname'].'/'); - $filenames[$value] = $value; - } - } - } - } + } } \ No newline at end of file diff --git a/backup/cc/cc_lib/xmlbase.php b/backup/cc/cc_lib/xmlbase.php index f336c1f27a6..0bc406dfe27 100644 --- a/backup/cc/cc_lib/xmlbase.php +++ b/backup/cc/cc_lib/xmlbase.php @@ -12,38 +12,35 @@ * */ -require_once 'gral_lib/cssparser.php'; +require_once('gral_lib/cssparser.php'); /** * Base XML class * */ class XMLGenericDocument { - - - private $charset; + private $charset; /** - * * Document * @var DOMDocument */ - public $doc = null; + public $doc = null; /** * * Xpath * @var DOMXPath */ protected $dxpath = null; - protected $filename; - private $filepath; - private $isloaded = false; - private $arrayPrefixNS = array(); - private $is_html = false; + protected $filename; + private $filepath; + private $isloaded = false; + private $arrayPrefixNS = array(); + private $is_html = false; /** - * @param string $value - * @return string - */ + * @param string $value + * @return string + */ public static function safexml($value) { $result = htmlspecialchars(html_entity_decode($value, ENT_QUOTES, 'UTF-8'), ENT_NOQUOTES, @@ -52,51 +49,51 @@ class XMLGenericDocument { return $result; } - function __construct($ch = 'UTF-8',$validatenow=true){ + function __construct($ch = 'UTF-8', $validatenow = true) { $this->charset = $ch; $this->documentInit(); $this->doc->validateOnParse = $validatenow; } - function __destruct(){ + function __destruct() { $this->dxpath = null; - $this->doc = null; + $this->doc = null; } - private function documentInit($withonCreate=true) { + private function documentInit($withonCreate = true) { $hg = false; - if ($this->isloaded){ + if ($this->isloaded) { $guardstate = $this->doc->validateOnParse; $hg = true; unset($this->dxpath); unset($this->doc); $this->isloaded = false; } - $this->doc = new DOMDocument("1.0",$this->charset); + $this->doc = new DOMDocument("1.0", $this->charset); $this->doc->strictErrorChecking = true; if ($hg) { $this->doc->validateOnParse = $guardstate; } $this->doc->formatOutput = true; $this->doc->preserveWhiteSpace = true; - if($withonCreate) { + if ($withonCreate) { $this->on_create(); } } - public function viewXML (){ + public function viewXML() { return $this->doc->saveXML(); } public function registerNS($prefix, $nsuri) { - $this->arrayPrefixNS[$prefix]=$nsuri; + $this->arrayPrefixNS[$prefix] = $nsuri; } public function load($fname) { - // Sine xml will remain loaded should the repeated load fail we should recreate document to be empty. + // Sine xml will remain loaded should the repeated load fail we should recreate document to be empty. $this->documentInit(false); $this->isloaded = $this->doc->load($fname); - if ($this->isloaded){ + if ($this->isloaded) { $this->filename = $fname; $this->processPath(); $this->is_html = false; @@ -104,7 +101,7 @@ class XMLGenericDocument { return $this->on_load(); } - public function loadUrl($url){ + public function loadUrl($url) { $this->documentInit(); $this->isloaded = true; $this->doc->loadXML( file_get_contents($url) ); @@ -112,7 +109,7 @@ class XMLGenericDocument { return $this->on_load(); } - public function loadHTML ($content){ + public function loadHTML($content) { $this->documentInit(); $this->doc->validateOnParse = false; $this->isloaded = true; @@ -121,7 +118,7 @@ class XMLGenericDocument { return $this->on_load(); } - public function loadXML ($content){ + public function loadXML($content) { $this->documentInit(); $this->doc->validateOnParse = false; $this->isloaded = true; @@ -130,9 +127,9 @@ class XMLGenericDocument { return $this->on_load(); } - public function loadHTMLFile($fname){ - //Sine xml will remain loaded should the repeated load fail - //we shoudl recreate document to be empty + public function loadHTMLFile($fname) { + // Sine xml will remain loaded should the repeated load fail + // we should recreate document to be empty. $this->documentInit(); $this->doc->validateOnParse = false; $this->isloaded = $this->doc->loadHTMLFile($fname); @@ -144,29 +141,28 @@ class XMLGenericDocument { return $this->on_load(); } - public function loadXMLFile($fname){ - //Sine xml will remain loaded should the repeated load fail - //we shoudl recreate document to be empty + public function loadXMLFile($fname) { + // Sine xml will remain loaded should the repeated load fail + // we should recreate document to be empty. $this->documentInit(); $this->doc->validateOnParse = false; $this->isloaded = $this->doc->load($fname); if ($this->isloaded) { $this->filename = $fname; $this->processPath(); - $this->is_html=true; + $this->is_html = true; } return $this->on_load(); } - public function loadString($content){ + public function loadString($content) { - $this->doc = new DOMDocument("1.0",$this->charset); + $this->doc = new DOMDocument("1.0", $this->charset); $content = ''.$content.''; $this->doc->loadXML($content); return true; - } public function save() { @@ -192,18 +188,16 @@ class XMLGenericDocument { return $this->doc->validate(); } - public function attributeValue($path,$attrname,$node=null) { + public function attributeValue($path, $attrname, $node = null) { $this->chkxpath(); $result = null; $resultlist = null; if (is_null($node)) { $resultlist = $this->dxpath->query($path); } else { - $resultlist = $this->dxpath->query($path,$node); + $resultlist = $this->dxpath->query($path, $node); } - if ( is_object($resultlist) && - ($resultlist->length > 0) && - $resultlist->item(0)->hasAttribute($attrname)){ + if (is_object($resultlist) && ($resultlist->length > 0) && $resultlist->item(0)->hasAttribute($attrname)) { $result = $resultlist->item(0)->getAttribute($attrname); } return $result; @@ -217,7 +211,7 @@ class XMLGenericDocument { * @param int $count * @return string */ - public function nodeValue($path, $node = null, $count = 1){ + public function nodeValue($path, $node = null, $count = 1) { $nd = $this->node($path, $node, $count); return $this->nodeTextValue($nd); } @@ -228,17 +222,17 @@ class XMLGenericDocument { * @param DOMNode $node * @return string */ - public function nodeTextValue($node){ + public function nodeTextValue($node) { $result = ''; if (is_object($node)) { if ($node->hasChildNodes()) { $chnodesList = $node->childNodes; $types = array(XML_TEXT_NODE, XML_CDATA_SECTION_NODE); foreach ($chnodesList as $chnode) { - if (in_array($chnode->nodeType, $types)){ - $result .= $chnode->wholeText; - } - } + if (in_array($chnode->nodeType, $types)) { + $result .= $chnode->wholeText; + } + } } } return $result; @@ -255,9 +249,8 @@ class XMLGenericDocument { public function node($path, $nd = null, $count = 1) { $result = null; $resultlist = $this->nodeList($path,$nd); - if ( is_object($resultlist) && - ($resultlist->length > 0) ){ - $result = $resultlist->item($count -1); + if (is_object($resultlist) && ($resultlist->length > 0)) { + $result = $resultlist->item($count - 1); } return $result; } @@ -269,7 +262,7 @@ class XMLGenericDocument { * @param DOMNode $node * @return DOMNodeList */ - public function nodeList($path,$node=null){ + public function nodeList($path, $node = null) { $this->chkxpath(); @@ -277,7 +270,7 @@ class XMLGenericDocument { if (is_null($node)) { $resultlist = $this->dxpath->query($path); } else { - $resultlist = $this->dxpath->query($path,$node); + $resultlist = $this->dxpath->query($path, $node); } return $resultlist; } @@ -392,12 +385,25 @@ class XMLGenericDocument { return $node->appendChild($this->create_attribute_ns($namespace, $name, $value)); } - public function fileName() {return $this->filename;} - public function filePath() {return $this->filepath;} + public function fileName() { + return $this->filename; + } - protected function on_load() {return $this->isloaded;} - protected function on_save() {return true;} - protected function on_create() {return true;} + public function filePath() { + return $this->filepath; + } + + protected function on_load() { + return $this->isloaded; + } + + protected function on_save() { + return true; + } + + protected function on_create() { + return true; + } public function resetXpath() { $this->dxpath = null; @@ -405,16 +411,16 @@ class XMLGenericDocument { } private function chkxpath() { - if (!isset($this->dxpath) || is_null($this->dxpath)){ + if (!isset($this->dxpath) || is_null($this->dxpath)) { $this->dxpath = new DOMXPath($this->doc); foreach ($this->arrayPrefixNS as $nskey => $nsuri) { - $this->dxpath->registerNamespace($nskey,$nsuri); + $this->dxpath->registerNamespace($nskey, $nsuri); } } } - protected function processPath(){ - $path_parts = pathinfo($this->filename); - $this->filepath = array_key_exists('dirname',$path_parts) ? $path_parts['dirname']."/" : ''; + protected function processPath() { + $path_parts = pathinfo($this->filename); + $this->filepath = array_key_exists('dirname', $path_parts) ? $path_parts['dirname']."/" : ''; } } diff --git a/backup/cc/entities.class.php b/backup/cc/entities.class.php index 106fcb39fa9..dfff6b2a1b9 100644 --- a/backup/cc/entities.class.php +++ b/backup/cc/entities.class.php @@ -25,9 +25,10 @@ defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.'); class entities { /** - * * Prepares convert for inclusion into XML + * * @param string $value + * @return string */ public static function safexml($value) { $result = htmlspecialchars(html_entity_decode($value, ENT_QUOTES, 'UTF-8'), @@ -57,7 +58,7 @@ class entities { $result = mb_convert_encoding($content, 'UTF-8', $encoding); } - // See if we can strip off body tag and anything outside of it + // See if we can strip off body tag and anything outside of it. foreach (array('body', 'html') as $tagname) { $regex = str_replace('##', $tagname, "/<##[^>]*>(.+)<\/##>/is"); if (preg_match($regex, $result, $matches)) { @@ -68,11 +69,11 @@ class entities { return $result; } - public function load_xml_resource ($path_to_file) { + public function load_xml_resource($path_to_file) { $resource = new DOMDocument(); - cc2moodle::log_action('Load the XML resource file: ' . $path_to_file); + cc2moodle::log_action('Load the XML resource file: '.$path_to_file); if (!$resource->load($path_to_file)) { cc2moodle::log_action('Cannot load the XML resource file: ' . $path_to_file, true); @@ -81,7 +82,7 @@ class entities { return $resource; } - public function update_sources ($html, $root_path = '') { + public function update_sources($html, $root_path = '') { $document = $this->load_html($html); @@ -111,13 +112,12 @@ class entities { return $html; } - public function full_path ($path, $dir_sep = DIRECTORY_SEPARATOR) { + public function full_path($path, $dir_sep = DIRECTORY_SEPARATOR) { $token = '$IMS-CC-FILEBASE$'; $path = str_replace($token, '', $path); if (is_string($path) && ($path != '')) { - $dir_sep; $dot_dir = '.'; $up_dir = '..'; $length = strlen($path); @@ -152,7 +152,6 @@ class entities { } return $result; - } public function include_titles ($html) { @@ -184,11 +183,10 @@ class entities { public function get_external_xml ($identifier) { - $response = ''; - $xpath = cc2moodle::newx_path(cc2moodle::$manifest, cc2moodle::$namespaces); - $files = $xpath->query('/imscc:manifest/imscc:resources/imscc:resource[@identifier="' . $identifier . '"]/imscc:file/@href'); + $files = $xpath->query('/imscc:manifest/imscc:resources/imscc:resource[@identifier="'. + $identifier.'"]/imscc:file/@href'); if (empty($files)) { $response = ''; @@ -199,7 +197,7 @@ class entities { return $response; } - public function move_files ($files, $destination_folder) { + public function move_files($files, $destination_folder) { global $CFG; if (!empty($files)) { @@ -242,7 +240,7 @@ class entities { if (!empty($files) && ($files->length > 0)) { foreach ($files as $file) { - //omit html files + // Omit html files. $ext = strtolower(pathinfo($file->nodeValue, PATHINFO_EXTENSION)); if (in_array($ext, array('html', 'htm', 'xhtml'))) { continue; @@ -253,7 +251,7 @@ class entities { unset($files); } - //are there any labels? + // Are there any labels? $xquery = "//imscc:item/imscc:item/imscc:item[imscc:title][not(@identifierref)]"; $labels = $xpath->query($xquery); if (!empty($labels) && ($labels->length > 0)) { @@ -265,7 +263,7 @@ class entities { if (!file_exists($dpath)) { mkdir($dpath, $CFG->directorypermissions, true); } - //copy the folder.gif file + // Copy the folder.gif file. $folder_gif = "{$CFG->dirroot}/pix/i/files.gif"; copy($folder_gif, $fpath); $all_files[] = $rfpath; @@ -337,7 +335,7 @@ class entities { return $response; } - public function truncate_text ($text, $max, $remove_html) { + public function truncate_text($text, $max, $remove_html) { if ($max > 10) { $text = substr($text, 0, ($max - 6)) . ' [...]'; diff --git a/backup/cc/entity.quiz.class.php b/backup/cc/entity.quiz.class.php index eabd85404ac..56c42de19c6 100644 --- a/backup/cc/entity.quiz.class.php +++ b/backup/cc/entity.quiz.class.php @@ -88,13 +88,17 @@ class cc_quiz extends entities { if (!empty($assessment_file)) { - $assessment = $this->load_xml_resource(cc2moodle::$path_to_manifest_folder . DIRECTORY_SEPARATOR . $assessment_file); + $assessment = $this->load_xml_resource( + cc2moodle::$path_to_manifest_folder . DIRECTORY_SEPARATOR . $assessment_file + ); if (!empty($assessment)) { $replace_values = array('unlimited' => 0); - $questions = $this->get_questions($assessment, $last_question_id, $last_answer_id, dirname($assessment_file), $is_question_bank); + $questions = $this->get_questions( + $assessment, $last_question_id, $last_answer_id, dirname($assessment_file), $is_question_bank + ); $question_count = count($questions); if (!empty($question_count)) { @@ -105,8 +109,10 @@ class cc_quiz extends entities { $instances[$instance['resource_indentifier']]['id'] = $last_instance_id; $instances[$instance['resource_indentifier']]['title'] = $instance['title']; $instances[$instance['resource_indentifier']]['is_question_bank'] = $is_question_bank; - $instances[$instance['resource_indentifier']]['options']['timelimit'] = $this->get_global_config($assessment, 'qmd_timelimit', 0); - $instances[$instance['resource_indentifier']]['options']['max_attempts'] = $this->get_global_config($assessment, 'cc_maxattempts', 0, $replace_values); + $instances[$instance['resource_indentifier']]['options']['timelimit'] = + $this->get_global_config($assessment, 'qmd_timelimit', 0); + $instances[$instance['resource_indentifier']]['options']['max_attempts'] = + $this->get_global_config($assessment, 'cc_maxattempts', 0, $replace_values); } } } @@ -148,7 +154,7 @@ class cc_quiz extends entities { $instance['options']['max_attempts'], $instance['options']['timelimit'], $node_course_modules_quiz_question_instances, - $node_course_modules_quiz_feedback); //this one has tags + $node_course_modules_quiz_feedback); // This one has tags. $node_question_mod = str_replace($find_tags, $replace_values, $sheet_question_mod); @@ -194,10 +200,14 @@ class cc_quiz extends entities { foreach ($instance['questions'] as $question) { $replace_values = array($question['id'] , $question['id']); - $node_course_module_mod_quiz_questions_instances .= str_replace($find_tags, $replace_values, $sheet_question_mod_instance); + $node_course_module_mod_quiz_questions_instances .= str_replace( + $find_tags, $replace_values, $sheet_question_mod_instance + ); } - $node_course_module_mod_quiz_questions_instances = str_replace($find_tags, $replace_values, $node_course_module_mod_quiz_questions_instances); + $node_course_module_mod_quiz_questions_instances = str_replace( + $find_tags, $replace_values, $node_course_module_mod_quiz_questions_instances + ); } return $node_course_module_mod_quiz_questions_instances; @@ -218,7 +228,7 @@ class cc_quiz extends entities { return $questions_string; } - private function create_node_course_question_categories ($instances) { + private function create_node_course_question_categories($instances) { $sheet_question_categories = cc2moodle::loadsheet(SHEET_COURSE_QUESTION_CATEGORIES); @@ -227,7 +237,8 @@ class cc_quiz extends entities { $node_course_question_categories_question_category = ''; foreach ($instances as $instance) { - $node_course_question_categories_question_category .= $this->create_node_course_question_categories_question_category($instance); + $node_course_question_categories_question_category .= + $this->create_node_course_question_categories_question_category($instance); } $find_tags = array('[#node_course_question_categories_question_category#]'); @@ -250,8 +261,10 @@ class cc_quiz extends entities { '[#quiz_stamp#]', '[#node_course_question_categories_question_category_questions#]'); - $node_course_question_categories_questions = $this->create_node_course_question_categories_question_category_question($instance); - $node_course_question_categories_questions = empty($node_course_question_categories_questions) ? '' : $node_course_question_categories_questions; + $node_course_question_categories_questions = + $this->create_node_course_question_categories_question_category_question($instance); + $node_course_question_categories_questions = + empty($node_course_question_categories_questions) ? '' : $node_course_question_categories_questions; $quiz_stamp = 'localhost+' . time() . '+' . $this->generate_random_string(6); diff --git a/backup/converter/imscc1/lib.php b/backup/converter/imscc1/lib.php index ec413cb8a21..10476d01752 100644 --- a/backup/converter/imscc1/lib.php +++ b/backup/converter/imscc1/lib.php @@ -1,31 +1,31 @@ -* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later -*/ + * Provides Common Cartridge v1 converter class + * + * @package core + * @subpackage backup-convert + * @copyright 2011 Darko Miletic + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ -require_once($CFG->dirroot . '/backup/converter/convertlib.php'); -require_once($CFG->dirroot . '/backup/cc/includes/constants.php'); -require_once($CFG->dirroot . '/backup/cc/cc2moodle.php'); -require_once($CFG->dirroot . '/backup/cc/validator.php'); +require_once($CFG->dirroot.'/backup/converter/convertlib.php'); +require_once($CFG->dirroot.'/backup/cc/includes/constants.php'); +require_once($CFG->dirroot.'/backup/cc/cc2moodle.php'); +require_once($CFG->dirroot.'/backup/cc/validator.php'); class imscc1_converter extends base_converter { /** - * Log a message - * - * @see parent::log() - * @param string $message message text - * @param int $level message level {@example backup::LOG_WARNING} - * @param null|mixed $a additional information - * @param null|int $depth the message depth - * @param bool $display whether the message should be sent to the output, too - */ + * Log a message + * + * @see parent::log() + * @param string $message message text + * @param int $level message level {@example backup::LOG_WARNING} + * @param null|mixed $a additional information + * @param null|int $depth the message depth + * @param bool $display whether the message should be sent to the output, too + */ public function log($message, $level, $a = null, $depth = null, $display = false) { parent::log('(imscc1) '.$message, $level, $a, $depth, $display); } @@ -42,12 +42,12 @@ class imscc1_converter extends base_converter { $filepath = $CFG->dataroot . '/temp/backup/' . $tempdir; $manifest = cc2moodle::get_manifest($filepath); if (!empty($manifest)) { - // looks promising, lets load some information + // Looks promising, lets load some information. $handle = fopen($manifest, 'r'); $xml_snippet = fread($handle, 1024); fclose($handle); - // check if it has the required strings + // Check if it has the required strings. $xml_snippet = strtolower($xml_snippet); $xml_snippet = preg_replace('/\s*/m', '', $xml_snippet); @@ -65,13 +65,13 @@ class imscc1_converter extends base_converter { /** - * Returns the basic information about the converter - * - * The returned array must contain the following keys: - * 'from' - the supported source format, eg. backup::FORMAT_MOODLE1 - * 'to' - the supported target format, eg. backup::FORMAT_MOODLE - * 'cost' - the cost of the conversion, non-negative non-zero integer - */ + * Returns the basic information about the converter + * + * The returned array must contain the following keys: + * 'from' - the supported source format, eg. backup::FORMAT_MOODLE1 + * 'to' - the supported target format, eg. backup::FORMAT_MOODLE + * 'cost' - the cost of the conversion, non-negative non-zero integer + */ public static function description() { return array( @@ -102,7 +102,7 @@ class imscc1_converter extends base_converter { throw new imscc1_convert_exception('protected_cc_not_supported'); } $status = $cc2moodle->generate_moodle_xml(); - //Final cleanup + // Final cleanup. $xml_error = new libxml_errors_mgr(true); $mdoc = new DOMDocument(); $mdoc->preserveWhiteSpace = false; @@ -116,7 +116,7 @@ class imscc1_converter extends base_converter { $this->log('validation error(s): '.PHP_EOL.error_messages::instance(), backup::LOG_DEBUG, null, 2); throw new imscc1_convert_exception(error_messages::instance()->to_string(true)); } - //Move the files to the workdir + // Move the files to the workdir. rename($manifestdir.'/course_files', $this->get_workdir_path().'/course_files'); } @@ -124,7 +124,7 @@ class imscc1_converter extends base_converter { } /** -* Exception thrown by this converter -*/ + * Exception thrown by this converter + */ class imscc1_convert_exception extends convert_exception { } diff --git a/backup/converter/imscc11/lib.php b/backup/converter/imscc11/lib.php index 72d9c8b2cd3..0c1c6d6202c 100644 --- a/backup/converter/imscc11/lib.php +++ b/backup/converter/imscc11/lib.php @@ -1,32 +1,32 @@ -* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later -*/ + * Provides Common Cartridge v1.1 converter class + * + * @package core + * @subpackage backup-convert + * @copyright 2011 Darko Miletic + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ -require_once($CFG->dirroot . '/backup/converter/convertlib.php'); -require_once($CFG->dirroot . '/backup/cc/includes/constants.php'); -require_once($CFG->dirroot . '/backup/cc/cc112moodle.php'); -require_once($CFG->dirroot . '/backup/cc/validator.php'); +require_once($CFG->dirroot.'/backup/converter/convertlib.php'); +require_once($CFG->dirroot.'/backup/cc/includes/constants.php'); +require_once($CFG->dirroot.'/backup/cc/cc112moodle.php'); +require_once($CFG->dirroot.'/backup/cc/validator.php'); class imscc11_converter extends base_converter { /** - * Log a message - * - * @see parent::log() - * @param string $message message text - * @param int $level message level {@example backup::LOG_WARNING} - * @param null|mixed $a additional information - * @param null|int $depth the message depth - * @param bool $display whether the message should be sent to the output, too - */ + * Log a message + * + * @see parent::log() + * @param string $message message text + * @param int $level message level {@example backup::LOG_WARNING} + * @param null|mixed $a additional information + * @param null|int $depth the message depth + * @param bool $display whether the message should be sent to the output, too + */ public function log($message, $level, $a = null, $depth = null, $display = false) { parent::log('(imscc1) '.$message, $level, $a, $depth, $display); } @@ -43,12 +43,12 @@ class imscc11_converter extends base_converter { $filepath = $CFG->dataroot . '/temp/backup/' . $tempdir; $manifest = cc112moodle::get_manifest($filepath); if (file_exists($manifest)) { - // looks promising, lets load some information + // Looks promising, lets load some information. $handle = fopen($manifest, 'r'); $xml_snippet = fread($handle, 1024); fclose($handle); - // check if it has the required strings + // Check if it has the required strings. $xml_snippet = strtolower($xml_snippet); $xml_snippet = preg_replace('/\s*/m', '', $xml_snippet); @@ -66,13 +66,13 @@ class imscc11_converter extends base_converter { /** - * Returns the basic information about the converter - * - * The returned array must contain the following keys: - * 'from' - the supported source format, eg. backup::FORMAT_MOODLE1 - * 'to' - the supported target format, eg. backup::FORMAT_MOODLE - * 'cost' - the cost of the conversion, non-negative non-zero integer - */ + * Returns the basic information about the converter + * + * The returned array must contain the following keys: + * 'from' - the supported source format, eg. backup::FORMAT_MOODLE1 + * 'to' - the supported target format, eg. backup::FORMAT_MOODLE + * 'cost' - the cost of the conversion, non-negative non-zero integer + */ public static function description() { return array( @@ -102,7 +102,7 @@ class imscc11_converter extends base_converter { throw new imscc11_convert_exception('protected_cc_not_supported'); } $status = $cc112moodle->generate_moodle_xml(); - //Final cleanup + // Final cleanup. $xml_error = new libxml_errors_mgr(true); $mdoc = new DOMDocument(); $mdoc->preserveWhiteSpace = false; @@ -116,7 +116,7 @@ class imscc11_converter extends base_converter { $this->log('validation error(s): '.PHP_EOL.error_messages::instance(), backup::LOG_DEBUG, null, 2); throw new imscc11_convert_exception(error_messages::instance()->to_string(true)); } - //Move the files to the workdir + // Move the files to the workdir. rename($manifestdir.'/course_files', $this->get_workdir_path().'/course_files'); } @@ -124,7 +124,7 @@ class imscc11_converter extends base_converter { } /** -* Exception thrown by this converter -*/ + * Exception thrown by this converter + */ class imscc11_convert_exception extends convert_exception { }