3 require_once '../env.inc.php';
4 require_once $gfwww.'include/pre.php';
5 require_once $gfcommon.'forum/Forum.class.php';
6 require_once $gfcommon.'forum/ForumMessage.class.php';
7 require_once $gfcommon.'forum/ForumMessageFactory.class.php';
8 require_once $gfwww.'forum/include/AttachManager.class.php';
12 function __construct($forums, $group_id, $msgonly = false) {
13 $this->forums = $forums;
14 $this->msgonly = $msgonly;
15 $this->group_id = $group_id;
16 $group = group_get_object($group_id);
17 if (!$group || !is_object($group)) {
18 print "error retrieving group from id";
19 } elseif ($group->isError()) {
22 $this->group = $group;
25 function add_monitoring_users($users, $forumObject){
26 foreach($users as $user){
27 $uid = user_get_object_by_name($user)->getID();
28 $forumObject->setMonitor($uid);
33 //content is a list of messages
35 function forum_fill_content($content, $forumObject, $parentMessageId = '', $thread_id = ''){
36 foreach ($content as $message){
37 $messageObject = new ForumMessage($forumObject);
38 $msg_time = strtotime($message['date']);
40 if (array_key_exists('name', $message['attachment'])){
43 $messageObject->create($message['subject'], $message['content'], $thread_id, $parentMessageId, $attachment, $msg_time);
44 if ($attachment == true){
45 $am = new AttachManager();
46 $am->SetForumMsg($messageObject);
47 $am->Setmsgid($messageObject->getID());
48 $userid = $messageObject->getPosterID();
49 $path = '/tmp/' . $message['attachment']['url'];
50 $filename = addslashes($message['attachment']['name']);
51 $filedata = file_get_contents($path);
52 $fs = filesize($path);
53 $finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic"); // Retourne le type mime
55 echo "error opening fileinfo";
58 $mimetype = $finfo->file($path);
59 $filehash = md5($filedata);
60 $am->AddToDBOnly($userid, $msg_time, $filename, base64_encode($filedata), $fs, 1, $filehash, $mimetype);
63 if (count($message['children']) != 0){
64 $this->forum_fill_content($message['children'], $forumObject, $messageObject->getID(), $messageObject->getThreadID());
70 function create_forum($forum){
71 $forumObject = new Forum($this->group);
73 $forumObject->create($forum['summary'], $forum['news_content'],1,'',0,0);
74 $this->forum_fill_content($forum['forum'], $forumObject);
75 return $forumObject->getID();
77 $bostr = array('Yes'=>0,'No'=>1);
78 $modlev = array('No Moderation'=>0, 'Moderation Level 1'=>1, 'Moderation Level 2'=>2);
79 $forumObject->create($forum['name'], $forum['description'], $bostr[$forum['admin']['is_public']], $forum['admin']['email_posts_to'], 1, $bostr[$forum['admin']['allow_anonymous_posts']], $modlev[$forum['admin']['moderation_level']]);
80 $fFact = new ForumMessageFactory($forumObject);
81 $thread = $fFact->getFlat();
84 //Monitoring users can be skipped seeing it's the only part of a project where monitoring users are imported, as of Aug.2010
85 $this->add_monitoring_users($forum['monitoring_users'], $forumObject);
86 $this->forum_fill_content($forum['content'], $forumObject);
91 * deleteForums - Delete all existing default forums from a projet
93 function deleteForums(){
94 $res = db_query_params ('SELECT group_forum_id FROM forum_group_list
96 array ($this->group_id));
97 while($row=db_fetch_array($res)){
98 $f = new Forum($this->group, $row['group_forum_id']);
99 $f->delete(true,true);
103 function forums_fill(){
104 $this->deleteForums();
105 foreach($this->forums as $forum){
106 $this->create_forum($forum);