Пример #1
0
 function parse_folder($data)
 {
     /*
     // this method is not particularly extensible. Using these flags, 2 bits
     // were found to always be on, 0x180000. Any forum with either of these
     // bits will now be imported
     $valid_folder_flags = array(
     	'00181000',
     	'00190800',
     	'00191000',
     	'00193000',
     	'001B1800',
     	'08181000',
     	'08190800',
     	'081B1800',
     );
     if ($data['type'] == 'open' AND in_array($data['attributes']['flags'], $valid_folder_flags))
     */
     if ($data['type'] == 'open') {
         if ($forum =& $this->get_first_tag('folder') and !empty($forum['__ignorechildren'])) {
             // we're ignoring a parent, so ignore this one as well
             $data['__ignorechildren'] = true;
             $this->push_stack($data);
             return;
         }
         if (!(hexdec($data['attributes']['flags']) & 0x180000) or in_array(trim($data['attributes']['name']), array('In', 'system', 'common', 'Click Here to Begin', 'Quick Help', 'plugins', 'Templates', 'webxTemplates', 'Images'))) {
             // wrong flags or is a special forum we don't want, so
             // don't import it and ignore any children it may have
             $data['__ignorechildren'] = true;
             $this->push_stack($data);
             return;
         } else {
             $this->push_stack($data);
         }
         $stack_size = $this->fetch_stack_size();
         if ($stack_size == 0) {
             //eeke !
             die('no push');
         } else {
             if ($stack_size == 1) {
                 // One deep its a cat
                 $category_object = new ImpExData($this->Db_object, $this->session, 'forum');
                 $category_object->set_value('mandatory', 'title', $data['attributes']['title'] ? $data['attributes']['title'] : $data['attributes']['name']);
                 $category_object->set_value('mandatory', 'displayorder', '1');
                 $category_object->set_value('mandatory', 'parentid', '-1');
                 $category_object->set_value('mandatory', 'importforumid', '0');
                 $category_object->set_value('mandatory', 'importcategoryid', hexdec($data['attributes']['unique']));
                 $category_object->set_value('mandatory', 'options', $this->_default_cat_permissions);
                 $category_object->set_value('nonmandatory', 'description', $data['attributes']['heading']);
                 if ($cat_id = $category_object->import_category($this->Db_object, $this->target_db_type, $this->target_db_prefix)) {
                     echo "<br /><span class=\"isucc\">Category -- <b>" . $category_object->how_complete() . "%</b></span> :: " . $category_object->get_value('mandatory', 'title');
                     $this->session->add_session_var('currentcat', $cat_id);
                     $this->session->add_session_var('currentforum', $cat_id);
                     flush();
                 } else {
                     echo "<br />'" . trim($attributes['attributes']['name']) . " not imported";
                 }
                 unset($category_object);
             } else {
                 if ($stack_size == 2) {
                     // Two deep its a forum
                     $forum_object = new ImpExData($this->Db_object, $this->session, 'forum');
                     $forum_object->set_value('mandatory', 'parentid', $this->session->get_session_var('currentcat'));
                     $forum_object->set_value('mandatory', 'title', $data['attributes']['name']);
                     $forum_object->set_value('mandatory', 'displayorder', $data['attributes']['sortSeq']);
                     $forum_object->set_value('mandatory', 'importforumid', hexdec($data['attributes']['unique']));
                     $forum_object->set_value('mandatory', 'importcategoryid', '0');
                     $forum_object->set_value('mandatory', 'options', $this->_default_forum_permissions);
                     $forum_object->set_value('nonmandatory', 'description', $forum['heading']);
                     $forum_object->set_value('nonmandatory', 'visible', '1');
                     if ($forum_id = $forum_object->import_forum($this->Db_object, $this->target_db_type, $this->target_db_prefix)) {
                         echo "<br /><span class=\"isucc\">Forum -- <b>" . $forum_object->how_complete() . "%</b></span> :: forum " . $forum_object->get_value('mandatory', 'title');
                         $this->session->add_session_var('currentforum', $forum_id);
                         flush();
                     } else {
                         echo "<br />'" . trim($data['attributes']['name']) . " not imported";
                     }
                     unset($forum_object);
                 } else {
                     // Two deep its a sub forum, with a folder tag
                     $forum_object = new ImpExData($this->Db_object, $this->session, 'forum');
                     $forum_object->set_value('mandatory', 'parentid', $this->session->get_session_var('currentforum'));
                     $forum_object->set_value('mandatory', 'title', $data['attributes']['name']);
                     $forum_object->set_value('mandatory', 'displayorder', $data['attributes']['sortSeq']);
                     $forum_object->set_value('mandatory', 'importforumid', hexdec($data['attributes']['unique']));
                     $forum_object->set_value('mandatory', 'importcategoryid', '0');
                     $forum_object->set_value('mandatory', 'options', $this->_default_forum_permissions);
                     $forum_object->set_value('nonmandatory', 'description', $forum['heading']);
                     $forum_object->set_value('nonmandatory', 'visible', '1');
                     if ($forum_id = $forum_object->import_forum($this->Db_object, $this->target_db_type, $this->target_db_prefix)) {
                         echo "<br /><span class=\"isucc\">Sub Forum -- <b>" . $forum_object->how_complete() . "%</b></span> :: forum " . $forum_object->get_value('mandatory', 'title');
                         $this->session->add_session_var('currentforum', $forum_id);
                         flush();
                     } else {
                         echo "<br />'" . trim($data['attributes']['name']) . " not imported";
                     }
                     unset($forum_object);
                 }
             }
         }
     } else {
         if ($data['type'] == 'close') {
             if ($popdata = $this->pop_first_tag($data['tag_name'])) {
                 //echo "popped $data[tag_name] off<br />\n"; flush();
             }
         }
     }
 }