|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00002 00003 // This file is part of Moodle - http://moodle.org/ 00004 // 00005 // Moodle is free software: you can redistribute it and/or modify 00006 // it under the terms of the GNU General Public License as published by 00007 // the Free Software Foundation, either version 3 of the License, or 00008 // (at your option) any later version. 00009 // 00010 // Moodle is distributed in the hope that it will be useful, 00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 // GNU General Public License for more details. 00014 // 00015 // You should have received a copy of the GNU General Public License 00016 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 00017 00031 class restore_html_block_task extends restore_block_task { 00032 00033 protected function define_my_settings() { 00034 } 00035 00036 protected function define_my_steps() { 00037 } 00038 00039 public function get_fileareas() { 00040 return array('content'); 00041 } 00042 00043 public function get_configdata_encoded_attributes() { 00044 return array('text'); // We need to encode some attrs in configdata 00045 } 00046 00047 static public function define_decode_contents() { 00048 00049 $contents = array(); 00050 00051 $contents[] = new restore_html_block_decode_content('block_instances', 'configdata', 'block_instance'); 00052 00053 return $contents; 00054 } 00055 00056 static public function define_decode_rules() { 00057 return array(); 00058 } 00059 } 00060 00066 class restore_html_block_decode_content extends restore_decode_content { 00067 00068 protected $configdata; // Temp storage for unserialized configdata 00069 00070 protected function get_iterator() { 00071 global $DB; 00072 00073 // Build the SQL dynamically here 00074 $fieldslist = 't.' . implode(', t.', $this->fields); 00075 $sql = "SELECT t.id, $fieldslist 00076 FROM {" . $this->tablename . "} t 00077 JOIN {backup_ids_temp} b ON b.newitemid = t.id 00078 WHERE b.backupid = ? 00079 AND b.itemname = ? 00080 AND t.blockname = 'html'"; 00081 $params = array($this->restoreid, $this->mapping); 00082 return ($DB->get_recordset_sql($sql, $params)); 00083 } 00084 00085 protected function preprocess_field($field) { 00086 $this->configdata = unserialize(base64_decode($field)); 00087 return isset($this->configdata->text) ? $this->configdata->text : ''; 00088 } 00089 00090 protected function postprocess_field($field) { 00091 $this->configdata->text = $field; 00092 return base64_encode(serialize($this->configdata)); 00093 } 00094 }