Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/mod/forum/backup/moodle2/backup_forum_stepslib.php
Go to the documentation of this file.
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 
00032 class backup_forum_activity_structure_step extends backup_activity_structure_step {
00033 
00034     protected function define_structure() {
00035 
00036         // To know if we are including userinfo
00037         $userinfo = $this->get_setting_value('userinfo');
00038 
00039         // Define each element separated
00040 
00041         $forum = new backup_nested_element('forum', array('id'), array(
00042             'type', 'name', 'intro', 'introformat',
00043             'assessed', 'assesstimestart', 'assesstimefinish', 'scale',
00044             'maxbytes', 'maxattachments', 'forcesubscribe', 'trackingtype',
00045             'rsstype', 'rssarticles', 'timemodified', 'warnafter',
00046             'blockafter', 'blockperiod', 'completiondiscussions', 'completionreplies',
00047             'completionposts'));
00048 
00049         $discussions = new backup_nested_element('discussions');
00050 
00051         $discussion = new backup_nested_element('discussion', array('id'), array(
00052             'name', 'firstpost', 'userid', 'groupid',
00053             'assessed', 'timemodified', 'usermodified', 'timestart',
00054             'timeend'));
00055 
00056         $posts = new backup_nested_element('posts');
00057 
00058         $post = new backup_nested_element('post', array('id'), array(
00059             'parent', 'userid', 'created', 'modified',
00060             'mailed', 'subject', 'message', 'messageformat',
00061             'messagetrust', 'attachment', 'totalscore', 'mailnow'));
00062 
00063         $ratings = new backup_nested_element('ratings');
00064 
00065         $rating = new backup_nested_element('rating', array('id'), array(
00066             'component', 'ratingarea', 'scaleid', 'value', 'userid', 'timecreated', 'timemodified'));
00067 
00068         $subscriptions = new backup_nested_element('subscriptions');
00069 
00070         $subscription = new backup_nested_element('subscription', array('id'), array(
00071             'userid'));
00072 
00073         $readposts = new backup_nested_element('readposts');
00074 
00075         $read = new backup_nested_element('read', array('id'), array(
00076             'userid', 'discussionid', 'postid', 'firstread',
00077             'lastread'));
00078 
00079         $trackedprefs = new backup_nested_element('trackedprefs');
00080 
00081         $track = new backup_nested_element('track', array('id'), array(
00082             'userid'));
00083 
00084         // Build the tree
00085 
00086         $forum->add_child($discussions);
00087         $discussions->add_child($discussion);
00088 
00089         $forum->add_child($subscriptions);
00090         $subscriptions->add_child($subscription);
00091 
00092         $forum->add_child($readposts);
00093         $readposts->add_child($read);
00094 
00095         $forum->add_child($trackedprefs);
00096         $trackedprefs->add_child($track);
00097 
00098         $discussion->add_child($posts);
00099         $posts->add_child($post);
00100 
00101         $post->add_child($ratings);
00102         $ratings->add_child($rating);
00103 
00104         // Define sources
00105 
00106         $forum->set_source_table('forum', array('id' => backup::VAR_ACTIVITYID));
00107 
00108         // All these source definitions only happen if we are including user info
00109         if ($userinfo) {
00110             $discussion->set_source_sql('
00111                 SELECT *
00112                   FROM {forum_discussions}
00113                  WHERE forum = ?',
00114                 array(backup::VAR_PARENTID));
00115 
00116             // Need posts ordered by id so parents are always before childs on restore
00117             $post->set_source_sql("SELECT *
00118                                      FROM {forum_posts}
00119                                     WHERE discussion = :discussion
00120                                  ORDER BY id", array('discussion' => backup::VAR_PARENTID));
00121 
00122             $subscription->set_source_table('forum_subscriptions', array('forum' => backup::VAR_PARENTID));
00123 
00124             $read->set_source_table('forum_read', array('forumid' => backup::VAR_PARENTID));
00125 
00126             $track->set_source_table('forum_track_prefs', array('forumid' => backup::VAR_PARENTID));
00127 
00128             $rating->set_source_table('rating', array('contextid'  => backup::VAR_CONTEXTID,
00129                                                       'component'  => backup_helper::is_sqlparam('mod_forum'),
00130                                                       'ratingarea' => backup_helper::is_sqlparam('post'),
00131                                                       'itemid'     => backup::VAR_PARENTID));
00132             $rating->set_source_alias('rating', 'value');
00133         }
00134 
00135         // Define id annotations
00136 
00137         $forum->annotate_ids('scale', 'scale');
00138 
00139         $discussion->annotate_ids('group', 'groupid');
00140 
00141         $post->annotate_ids('user', 'userid');
00142 
00143         $rating->annotate_ids('scale', 'scaleid');
00144 
00145         $rating->annotate_ids('user', 'userid');
00146 
00147         $subscription->annotate_ids('user', 'userid');
00148 
00149         $read->annotate_ids('user', 'userid');
00150 
00151         $track->annotate_ids('user', 'userid');
00152 
00153         // Define file annotations
00154 
00155         $forum->annotate_files('mod_forum', 'intro', null); // This file area hasn't itemid
00156 
00157         $post->annotate_files('mod_forum', 'post', 'id');
00158         $post->annotate_files('mod_forum', 'attachment', 'id');
00159 
00160         // Return the root element (forum), wrapped into standard activity structure
00161         return $this->prepare_activity_structure($forum);
00162     }
00163 
00164 }
 All Data Structures Namespaces Files Functions Variables Enumerations