Passed
Push — master ( 492cc7...e5a5fc )
by Michael
45s queued 11s
created
action.post.php 1 patch
Switch Indentation   +173 added lines, -173 removed lines patch added patch discarded remove patch
@@ -46,179 +46,179 @@
 block discarded – undo
46 46
 }
47 47
 
48 48
 switch ($op) {
49
-    case 'restore':
50
-        $post_id = array_values($post_id);
51
-        sort($post_id);
52
-        $topics = [];
53
-        $forums = [];
54
-        foreach ($post_id as $post) {
55
-            $postObject = $postHandler->get($post);
56
-            if ($postObject->getVar('topic_id') < 1) {
57
-                continue;
58
-            }
59
-
60
-            $postHandler->approve($postObject, true);
61
-            $topics[$postObject->getVar('topic_id')] = 1;
62
-            $forums[$postObject->getVar('forum_id')] = 1;
63
-            unset($postObject);
64
-        }
65
-        foreach (array_keys($topics) as $topic) {
66
-            $topicHandler->synchronization($topic);
67
-        }
68
-        foreach (array_keys($forums) as $forum) {
69
-            $forumHandler->synchronization($forum);
70
-        }
71
-        break;
72
-    case 'approve':
73
-        $post_id = array_values($post_id);
74
-        sort($post_id);
75
-        $topics      = [];
76
-        $forums      = [];
77
-        $criteria    = new \Criteria('post_id', '(' . implode(',', $post_id) . ')', 'IN');
78
-        $postsObject = $postHandler->getObjects($criteria, true);
79
-        foreach ($post_id as $post) {
80
-            /** @var Newbb\Post $postObject */
81
-            $postObject = $postsObject[$post];
82
-            if (!empty($topic_id) && $topic_id !== $postObject->getVar('topic_id')) {
83
-                continue;
84
-            }
85
-            $postHandler->approve($postObject);
86
-            $topics[$postObject->getVar('topic_id')] = $post;
87
-            $forums[$postObject->getVar('forum_id')] = 1;
88
-        }
89
-        foreach (array_keys($topics) as $topic) {
90
-            $topicHandler->synchronization($topic);
91
-        }
92
-        foreach (array_keys($forums) as $forum) {
93
-            $forumHandler->synchronization($forum);
94
-        }
95
-
96
-        if (empty($GLOBALS['xoopsModuleConfig']['notification_enabled'])) {
97
-            break;
98
-        }
99
-
100
-        $criteria_topic = new \Criteria('topic_id', '(' . implode(',', array_keys($topics)) . ')', 'IN');
101
-        $topic_list     = $topicHandler->getList($criteria_topic, true);
102
-
103
-        $criteria_forum = new \Criteria('forum_id', '(' . implode(',', array_keys($forums)) . ')', 'IN');
104
-        $forum_list     = $forumHandler->getList($criteria_forum);
105
-
106
-        require_once __DIR__ . '/include/notification.inc.php';
107
-        /** @var \XoopsNotificationHandler $notificationHandler */
108
-        $notificationHandler = xoops_getHandler('notification');
109
-        foreach ($post_id as $post) {
110
-            $tags = [];
111
-            /** @var Newbb\Post[] $postsObject [$post] */
112
-            $tags['THREAD_NAME'] = $topic_list[$postsObject[$post]->getVar('topic_id')];
113
-            $tags['THREAD_URL']  = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewtopic.php?topic_id=' . $postsObject[$post]->getVar('topic_id') . '&amp;forum=' . $postsObject[$post]->getVar('forum_id');
114
-            $tags['FORUM_NAME']  = $forum_list[$postsObject[$post]->getVar('forum_id')];
115
-            $tags['FORUM_URL']   = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewforum.php?forum=' . $postsObject[$post]->getVar('forum_id');
116
-            $tags['POST_URL']    = $tags['THREAD_URL'] . '#forumpost' . $post;
117
-            $notificationHandler->triggerEvent('thread', $postsObject[$post]->getVar('topic_id'), 'new_post', $tags);
118
-            $notificationHandler->triggerEvent('forum', $postsObject[$post]->getVar('forum_id'), 'new_post', $tags);
119
-            $notificationHandler->triggerEvent('global', 0, 'new_post', $tags);
120
-            $tags['POST_CONTENT'] = $postsObject[$post]->getVar('post_text');
121
-            $tags['POST_NAME']    = $postsObject[$post]->getVar('subject');
122
-            $notificationHandler->triggerEvent('global', 0, 'new_fullpost', $tags);
123
-            $notificationHandler->triggerEvent('forum', $postsObject[$post]->getVar('forum_id'), 'new_fullpost', $tags);
124
-        }
125
-        break;
126
-    case 'delete':
127
-        $post_id = array_values($post_id);
128
-        rsort($post_id);
129
-        $topics = [];
130
-        $forums = [];
131
-        foreach ($post_id as $post) {
132
-            $postObject = $postHandler->get($post);
133
-            if (!empty($topic_id) && $topic_id !== $postObject->getVar('topic_id')) {
134
-                continue;
135
-            }
136
-            $topics[$postObject->getVar('topic_id')] = 1;
137
-            $forums[$postObject->getVar('forum_id')] = 1;
138
-            $postHandler->delete($postObject, true);
139
-            unset($postObject);
140
-        }
141
-        foreach (array_keys($topics) as $topic) {
142
-            $topicHandler->synchronization($topic);
143
-        }
144
-        foreach (array_keys($forums) as $forum) {
145
-            $forumHandler->synchronization($forum);
146
-        }
147
-        break;
148
-    case 'split':
149
-        /** @var Newbb\Post $postObject */
150
-        $postObject = $postHandler->get($post_id);
151
-        if (0 === count($post_id) || $postObject->isTopic()) {
152
-            break;
153
-        }
154
-        $topic_id = $postObject->getVar('topic_id');
155
-
156
-        $newtopic = $topicHandler->create();
157
-        $newtopic->setVar('topic_title', $postObject->getVar('subject'), true);
158
-        $newtopic->setVar('topic_poster', $postObject->getVar('uid'), true);
159
-        $newtopic->setVar('forum_id', $postObject->getVar('forum_id'), true);
160
-        $newtopic->setVar('topic_time', $postObject->getVar('post_time'), true);
161
-        $newtopic->setVar('poster_name', $postObject->getVar('poster_name'), true);
162
-        $newtopic->setVar('approved', 1, true);
163
-        $topicHandler->insert($newtopic, true);
164
-        $new_topic_id = $newtopic->getVar('topic_id');
165
-
166
-        $pid = $postObject->getVar('pid');
167
-
168
-        $postObject->setVar('topic_id', $new_topic_id, true);
169
-        $postObject->setVar('pid', 0, true);
170
-        $postHandler->insert($postObject);
171
-
172
-        /* split a single post */
173
-        if (1 === $mode) {
174
-            $criteria = new \CriteriaCompo(new \Criteria('topic_id', $topic_id));
175
-            $criteria->add(new \Criteria('pid', $post_id));
176
-            $postHandler->updateAll('pid', $pid, $criteria, true);
177
-        /* split a post and its children posts */
178
-        } elseif (2 === $mode) {
179
-            require_once $GLOBALS['xoops']->path('class/xoopstree.php');
180
-            $mytree = new \XoopsTree($GLOBALS['xoopsDB']->prefix('newbb_posts'), 'post_id', 'pid');
181
-            $posts  = $mytree->getAllChildId($post_id);
182
-            if (count($posts) > 0) {
183
-                $criteria = new \Criteria('post_id', '(' . implode(',', $posts) . ')', 'IN');
184
-                $postHandler->updateAll('topic_id', $new_topic_id, $criteria, true);
185
-            }
186
-            /* split a post and all posts coming after */
187
-        } elseif (3 === $mode) {
188
-            $criteria = new \CriteriaCompo(new \Criteria('topic_id', $topic_id));
189
-            $criteria->add(new \Criteria('post_id', $post_id, '>'));
190
-            $postHandler->updateAll('topic_id', $new_topic_id, $criteria, true);
191
-
192
-            unset($criteria);
193
-            $criteria = new \CriteriaCompo(new \Criteria('topic_id', $new_topic_id));
194
-            $criteria->add(new \Criteria('post_id', $post_id, '>'));
195
-            $postHandler->identifierName = 'pid';
196
-            $posts                       = $postHandler->getList($criteria);
197
-
198
-            unset($criteria);
199
-            $post_update = [];
200
-            foreach ($posts as $postid => $pid) {
201
-                //                if (!in_array($pid, array_keys($posts))) {
202
-                if (!array_key_exists($pid, $posts)) {
203
-                    $post_update[] = $pid;
204
-                }
205
-                if (!array_key_exists($pid, $posts)) {
206
-                    $post_update2[] = $pid;
207
-                }
208
-            }
209
-            if (count($post_update)) {
210
-                $criteria = new \Criteria('post_id', '(' . implode(',', $post_update) . ')', 'IN');
211
-                $postHandler->updateAll('pid', $post_id, $criteria, true);
212
-            }
213
-        }
214
-
215
-        $forum_id = $postObject->getVar('forum_id');
216
-        $topicHandler->synchronization($topic_id);
217
-        $topicHandler->synchronization($new_topic_id);
218
-        $sql    = sprintf('UPDATE "%s" SET forum_topics = forum_topics+1 WHERE forum_id = "%u"', $GLOBALS['xoopsDB']->prefix('newbb_forums'), $forum_id);
219
-        $result = $GLOBALS['xoopsDB']->queryF($sql);
220
-
221
-        break;
49
+    	case 'restore':
50
+        	$post_id = array_values($post_id);
51
+        	sort($post_id);
52
+        	$topics = [];
53
+        	$forums = [];
54
+        	foreach ($post_id as $post) {
55
+            	$postObject = $postHandler->get($post);
56
+            	if ($postObject->getVar('topic_id') < 1) {
57
+                	continue;
58
+            	}
59
+
60
+            	$postHandler->approve($postObject, true);
61
+            	$topics[$postObject->getVar('topic_id')] = 1;
62
+            	$forums[$postObject->getVar('forum_id')] = 1;
63
+            	unset($postObject);
64
+        	}
65
+        	foreach (array_keys($topics) as $topic) {
66
+            	$topicHandler->synchronization($topic);
67
+        	}
68
+        	foreach (array_keys($forums) as $forum) {
69
+            	$forumHandler->synchronization($forum);
70
+        	}
71
+        	break;
72
+    	case 'approve':
73
+        	$post_id = array_values($post_id);
74
+        	sort($post_id);
75
+        	$topics      = [];
76
+        	$forums      = [];
77
+        	$criteria    = new \Criteria('post_id', '(' . implode(',', $post_id) . ')', 'IN');
78
+        	$postsObject = $postHandler->getObjects($criteria, true);
79
+        	foreach ($post_id as $post) {
80
+            	/** @var Newbb\Post $postObject */
81
+            	$postObject = $postsObject[$post];
82
+            	if (!empty($topic_id) && $topic_id !== $postObject->getVar('topic_id')) {
83
+                	continue;
84
+            	}
85
+            	$postHandler->approve($postObject);
86
+            	$topics[$postObject->getVar('topic_id')] = $post;
87
+            	$forums[$postObject->getVar('forum_id')] = 1;
88
+        	}
89
+        	foreach (array_keys($topics) as $topic) {
90
+            	$topicHandler->synchronization($topic);
91
+        	}
92
+        	foreach (array_keys($forums) as $forum) {
93
+            	$forumHandler->synchronization($forum);
94
+        	}
95
+
96
+        	if (empty($GLOBALS['xoopsModuleConfig']['notification_enabled'])) {
97
+            	break;
98
+        	}
99
+
100
+        	$criteria_topic = new \Criteria('topic_id', '(' . implode(',', array_keys($topics)) . ')', 'IN');
101
+        	$topic_list     = $topicHandler->getList($criteria_topic, true);
102
+
103
+        	$criteria_forum = new \Criteria('forum_id', '(' . implode(',', array_keys($forums)) . ')', 'IN');
104
+        	$forum_list     = $forumHandler->getList($criteria_forum);
105
+
106
+        	require_once __DIR__ . '/include/notification.inc.php';
107
+        	/** @var \XoopsNotificationHandler $notificationHandler */
108
+        	$notificationHandler = xoops_getHandler('notification');
109
+        	foreach ($post_id as $post) {
110
+            	$tags = [];
111
+            	/** @var Newbb\Post[] $postsObject [$post] */
112
+            	$tags['THREAD_NAME'] = $topic_list[$postsObject[$post]->getVar('topic_id')];
113
+            	$tags['THREAD_URL']  = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewtopic.php?topic_id=' . $postsObject[$post]->getVar('topic_id') . '&amp;forum=' . $postsObject[$post]->getVar('forum_id');
114
+            	$tags['FORUM_NAME']  = $forum_list[$postsObject[$post]->getVar('forum_id')];
115
+            	$tags['FORUM_URL']   = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewforum.php?forum=' . $postsObject[$post]->getVar('forum_id');
116
+            	$tags['POST_URL']    = $tags['THREAD_URL'] . '#forumpost' . $post;
117
+            	$notificationHandler->triggerEvent('thread', $postsObject[$post]->getVar('topic_id'), 'new_post', $tags);
118
+            	$notificationHandler->triggerEvent('forum', $postsObject[$post]->getVar('forum_id'), 'new_post', $tags);
119
+            	$notificationHandler->triggerEvent('global', 0, 'new_post', $tags);
120
+            	$tags['POST_CONTENT'] = $postsObject[$post]->getVar('post_text');
121
+            	$tags['POST_NAME']    = $postsObject[$post]->getVar('subject');
122
+            	$notificationHandler->triggerEvent('global', 0, 'new_fullpost', $tags);
123
+            	$notificationHandler->triggerEvent('forum', $postsObject[$post]->getVar('forum_id'), 'new_fullpost', $tags);
124
+        	}
125
+        	break;
126
+    	case 'delete':
127
+        	$post_id = array_values($post_id);
128
+        	rsort($post_id);
129
+        	$topics = [];
130
+        	$forums = [];
131
+        	foreach ($post_id as $post) {
132
+            	$postObject = $postHandler->get($post);
133
+            	if (!empty($topic_id) && $topic_id !== $postObject->getVar('topic_id')) {
134
+                	continue;
135
+            	}
136
+            	$topics[$postObject->getVar('topic_id')] = 1;
137
+            	$forums[$postObject->getVar('forum_id')] = 1;
138
+            	$postHandler->delete($postObject, true);
139
+            	unset($postObject);
140
+        	}
141
+        	foreach (array_keys($topics) as $topic) {
142
+            	$topicHandler->synchronization($topic);
143
+        	}
144
+        	foreach (array_keys($forums) as $forum) {
145
+            	$forumHandler->synchronization($forum);
146
+        	}
147
+        	break;
148
+    	case 'split':
149
+        	/** @var Newbb\Post $postObject */
150
+        	$postObject = $postHandler->get($post_id);
151
+        	if (0 === count($post_id) || $postObject->isTopic()) {
152
+            	break;
153
+        	}
154
+        	$topic_id = $postObject->getVar('topic_id');
155
+
156
+        	$newtopic = $topicHandler->create();
157
+        	$newtopic->setVar('topic_title', $postObject->getVar('subject'), true);
158
+        	$newtopic->setVar('topic_poster', $postObject->getVar('uid'), true);
159
+        	$newtopic->setVar('forum_id', $postObject->getVar('forum_id'), true);
160
+        	$newtopic->setVar('topic_time', $postObject->getVar('post_time'), true);
161
+        	$newtopic->setVar('poster_name', $postObject->getVar('poster_name'), true);
162
+        	$newtopic->setVar('approved', 1, true);
163
+        	$topicHandler->insert($newtopic, true);
164
+        	$new_topic_id = $newtopic->getVar('topic_id');
165
+
166
+        	$pid = $postObject->getVar('pid');
167
+
168
+        	$postObject->setVar('topic_id', $new_topic_id, true);
169
+        	$postObject->setVar('pid', 0, true);
170
+        	$postHandler->insert($postObject);
171
+
172
+        	/* split a single post */
173
+        	if (1 === $mode) {
174
+            	$criteria = new \CriteriaCompo(new \Criteria('topic_id', $topic_id));
175
+            	$criteria->add(new \Criteria('pid', $post_id));
176
+            	$postHandler->updateAll('pid', $pid, $criteria, true);
177
+        	/* split a post and its children posts */
178
+        	} elseif (2 === $mode) {
179
+            	require_once $GLOBALS['xoops']->path('class/xoopstree.php');
180
+            	$mytree = new \XoopsTree($GLOBALS['xoopsDB']->prefix('newbb_posts'), 'post_id', 'pid');
181
+            	$posts  = $mytree->getAllChildId($post_id);
182
+            	if (count($posts) > 0) {
183
+                	$criteria = new \Criteria('post_id', '(' . implode(',', $posts) . ')', 'IN');
184
+                	$postHandler->updateAll('topic_id', $new_topic_id, $criteria, true);
185
+            	}
186
+            	/* split a post and all posts coming after */
187
+        	} elseif (3 === $mode) {
188
+            	$criteria = new \CriteriaCompo(new \Criteria('topic_id', $topic_id));
189
+            	$criteria->add(new \Criteria('post_id', $post_id, '>'));
190
+            	$postHandler->updateAll('topic_id', $new_topic_id, $criteria, true);
191
+
192
+            	unset($criteria);
193
+            	$criteria = new \CriteriaCompo(new \Criteria('topic_id', $new_topic_id));
194
+            	$criteria->add(new \Criteria('post_id', $post_id, '>'));
195
+            	$postHandler->identifierName = 'pid';
196
+            	$posts                       = $postHandler->getList($criteria);
197
+
198
+            	unset($criteria);
199
+            	$post_update = [];
200
+            	foreach ($posts as $postid => $pid) {
201
+                	//                if (!in_array($pid, array_keys($posts))) {
202
+                	if (!array_key_exists($pid, $posts)) {
203
+                    	$post_update[] = $pid;
204
+                	}
205
+                	if (!array_key_exists($pid, $posts)) {
206
+                    	$post_update2[] = $pid;
207
+                	}
208
+            	}
209
+            	if (count($post_update)) {
210
+                	$criteria = new \Criteria('post_id', '(' . implode(',', $post_update) . ')', 'IN');
211
+                	$postHandler->updateAll('pid', $post_id, $criteria, true);
212
+            	}
213
+        	}
214
+
215
+        	$forum_id = $postObject->getVar('forum_id');
216
+        	$topicHandler->synchronization($topic_id);
217
+        	$topicHandler->synchronization($new_topic_id);
218
+        	$sql    = sprintf('UPDATE "%s" SET forum_topics = forum_topics+1 WHERE forum_id = "%u"', $GLOBALS['xoopsDB']->prefix('newbb_forums'), $forum_id);
219
+        	$result = $GLOBALS['xoopsDB']->queryF($sql);
220
+
221
+        	break;
222 222
 }
223 223
 if (!empty($topic_id)) {
224 224
     redirect_header(XOOPS_URL . "/modules/newbb/viewtopic.php?topic_id=$topic_id", 2, _MD_NEWBB_DBUPDATED);
Please login to merge, or discard this patch.
viewtopic.php 1 patch
Switch Indentation   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -714,18 +714,18 @@
 block discarded – undo
714 714
 }
715 715
 
716 716
 switch ($status) {
717
-    case 'active':
718
-        $current_status = '[' . _MD_NEWBB_TYPE_ADMIN . ']';
719
-        break;
720
-    case 'pending':
721
-        $current_status = '[' . _MD_NEWBB_TYPE_PENDING . ']';
722
-        break;
723
-    case 'deleted':
724
-        $current_status = '[' . _MD_NEWBB_TYPE_DELETED . ']';
725
-        break;
726
-    default:
727
-        $current_status = '';
728
-        break;
717
+    	case 'active':
718
+        	$current_status = '[' . _MD_NEWBB_TYPE_ADMIN . ']';
719
+        	break;
720
+    	case 'pending':
721
+        	$current_status = '[' . _MD_NEWBB_TYPE_PENDING . ']';
722
+        	break;
723
+    	case 'deleted':
724
+        	$current_status = '[' . _MD_NEWBB_TYPE_DELETED . ']';
725
+        	break;
726
+    	default:
727
+        	$current_status = '';
728
+        	break;
729 729
 }
730 730
 $xoopsTpl->assign('topicstatus', $current_status);
731 731
 
Please login to merge, or discard this patch.
action.topic.php 1 patch
Switch Indentation   +137 added lines, -137 removed lines patch added patch discarded remove patch
@@ -37,150 +37,150 @@
 block discarded – undo
37 37
     redirect_header(XOOPS_URL . '/index.php', 2, _MD_NEWBB_NORIGHTTOACCESS);
38 38
 }
39 39
 switch ($op) {
40
-    case 'restore':
41
-        $forums       = [];
42
-        $topicsObject = $topicHandler->getAll(new \Criteria('topic_id', '(' . implode(',', $topic_id) . ')', 'IN'));
43
-        foreach (array_keys($topicsObject) as $id) {
44
-            /** @var Newbb\Topic $topicObject */
45
-            $topicObject = $topicsObject[$id];
46
-            $topicHandler->approve($topicObject);
47
-            $topicHandler->synchronization($topicObject);
48
-            $forums[$topicObject->getVar('forum_id')] = 1;
49
-        }
50
-        $criteria_forum = new \Criteria('forum_id', '(' . implode(',', array_keys($forums)) . ')', 'IN');
51
-        $forumsObject   = $forumHandler->getAll($criteria_forum);
52
-        foreach (array_keys($forumsObject) as $id) {
53
-            $forumHandler->synchronization($forumsObject[$id]);
54
-        }
55
-        unset($topicsObject, $forumsObject);
56
-        break;
57
-    case 'approve':
58
-        $forums       = [];
59
-        $topicsObject = $topicHandler->getAll(new \Criteria('topic_id', '(' . implode(',', $topic_id) . ')', 'IN'));
60
-        foreach (array_keys($topicsObject) as $id) {
61
-            /** @var Newbb\Topic $topicObject */
62
-            $topicObject = $topicsObject[$id];
63
-            $topicHandler->approve($topicObject);
64
-            $topicHandler->synchronization($topicObject);
65
-            $forums[$topicObject->getVar('forum_id')] = 1;
66
-        }
40
+    	case 'restore':
41
+        	$forums       = [];
42
+        	$topicsObject = $topicHandler->getAll(new \Criteria('topic_id', '(' . implode(',', $topic_id) . ')', 'IN'));
43
+        	foreach (array_keys($topicsObject) as $id) {
44
+            	/** @var Newbb\Topic $topicObject */
45
+            	$topicObject = $topicsObject[$id];
46
+            	$topicHandler->approve($topicObject);
47
+            	$topicHandler->synchronization($topicObject);
48
+            	$forums[$topicObject->getVar('forum_id')] = 1;
49
+        	}
50
+        	$criteria_forum = new \Criteria('forum_id', '(' . implode(',', array_keys($forums)) . ')', 'IN');
51
+        	$forumsObject   = $forumHandler->getAll($criteria_forum);
52
+        	foreach (array_keys($forumsObject) as $id) {
53
+            	$forumHandler->synchronization($forumsObject[$id]);
54
+        	}
55
+        	unset($topicsObject, $forumsObject);
56
+        	break;
57
+    	case 'approve':
58
+        	$forums       = [];
59
+        	$topicsObject = $topicHandler->getAll(new \Criteria('topic_id', '(' . implode(',', $topic_id) . ')', 'IN'));
60
+        	foreach (array_keys($topicsObject) as $id) {
61
+            	/** @var Newbb\Topic $topicObject */
62
+            	$topicObject = $topicsObject[$id];
63
+            	$topicHandler->approve($topicObject);
64
+            	$topicHandler->synchronization($topicObject);
65
+            	$forums[$topicObject->getVar('forum_id')] = 1;
66
+        	}
67 67
 
68
-        $criteria_forum = new \Criteria('forum_id', '(' . implode(',', array_keys($forums)) . ')', 'IN');
69
-        $forumsObject   = $forumHandler->getAll($criteria_forum);
70
-        foreach (array_keys($forumsObject) as $id) {
71
-            $forumHandler->synchronization($forumsObject[$id]);
72
-        }
68
+        	$criteria_forum = new \Criteria('forum_id', '(' . implode(',', array_keys($forums)) . ')', 'IN');
69
+        	$forumsObject   = $forumHandler->getAll($criteria_forum);
70
+        	foreach (array_keys($forumsObject) as $id) {
71
+            	$forumHandler->synchronization($forumsObject[$id]);
72
+        	}
73 73
 
74
-        if (empty($GLOBALS['xoopsModuleConfig']['notification_enabled'])) {
75
-            break;
76
-        }
74
+        	if (empty($GLOBALS['xoopsModuleConfig']['notification_enabled'])) {
75
+            	break;
76
+        	}
77 77
 
78
-        require_once __DIR__ . '/include/notification.inc.php';
79
-        /** @var \XoopsNotificationHandler $notificationHandler */
80
-        $notificationHandler = xoops_getHandler('notification');
81
-        foreach (array_keys($topicsObject) as $id) {
82
-            $topicObject         = $topicsObject[$id];
83
-            $tags                = [];
84
-            $tags['THREAD_NAME'] = $topicObject->getVar('topic_title');
85
-            $tags['THREAD_URL']  = XOOPS_URL . '/modules/' . $moduleDirName . '/viewtopic.php?topic_id=' . $id . '&amp;forum=' . $topicObject->getVar('forum_id');
86
-            /** @var Newbb\Forum[] $forumsObject */
87
-            $tags['FORUM_NAME'] = $forumsObject[$topicObject->getVar('forum_id')]->getVar('forum_name');
88
-            $tags['FORUM_URL']  = XOOPS_URL . '/modules/' . $moduleDirName . '/viewforum.php?forum=' . $topicObject->getVar('forum_id');
89
-            $notificationHandler->triggerEvent('global', 0, 'new_thread', $tags);
90
-            $notificationHandler->triggerEvent('forum', $topicObject->getVar('forum_id'), 'new_thread', $tags);
91
-            $postObject       = $topicHandler->getTopPost($id);
92
-            $tags['POST_URL'] = $tags['THREAD_URL'] . '#forumpost' . $postObject->getVar('post_id');
93
-            $notificationHandler->triggerEvent('thread', $id, 'new_post', $tags);
94
-            $notificationHandler->triggerEvent('forum', $topicObject->getVar('forum_id'), 'new_post', $tags);
95
-            $notificationHandler->triggerEvent('global', 0, 'new_post', $tags);
96
-            $tags['POST_CONTENT'] = $postObject->getVar('post_text');
97
-            $tags['POST_NAME']    = $postObject->getVar('subject');
98
-            $notificationHandler->triggerEvent('global', 0, 'new_fullpost', $tags);
99
-            $notificationHandler->triggerEvent('forum', $topicObject->getVar('forum_id'), 'new_fullpost', $tags);
100
-            unset($postObject);
101
-        }
102
-        unset($topicsObject, $forumsObject);
103
-        break;
104
-    case 'delete':
105
-        $forums = [];
106
-        /** @var Newbb\TopicHandler|\XoopsPersistableObjectHandler $topicHandler */
107
-        $topicsObject = $topicHandler->getAll(new \Criteria('topic_id', '(' . implode(',', $topic_id) . ')', 'IN'));
108
-        foreach (array_keys($topicsObject) as $id) {
109
-            /** @var Newbb\Topic $topicObject */
110
-            $topicObject = $topicsObject[$id];
111
-            // irmtfan should be set to false to not delete topic from database
112
-            $topicHandler->delete($topicObject, false);
113
-            $topicHandler->synchronization($topicObject);
114
-            $forums[$topicObject->getVar('forum_id')] = 1;
115
-        }
78
+        	require_once __DIR__ . '/include/notification.inc.php';
79
+        	/** @var \XoopsNotificationHandler $notificationHandler */
80
+        	$notificationHandler = xoops_getHandler('notification');
81
+        	foreach (array_keys($topicsObject) as $id) {
82
+            	$topicObject         = $topicsObject[$id];
83
+            	$tags                = [];
84
+            	$tags['THREAD_NAME'] = $topicObject->getVar('topic_title');
85
+            	$tags['THREAD_URL']  = XOOPS_URL . '/modules/' . $moduleDirName . '/viewtopic.php?topic_id=' . $id . '&amp;forum=' . $topicObject->getVar('forum_id');
86
+            	/** @var Newbb\Forum[] $forumsObject */
87
+            	$tags['FORUM_NAME'] = $forumsObject[$topicObject->getVar('forum_id')]->getVar('forum_name');
88
+            	$tags['FORUM_URL']  = XOOPS_URL . '/modules/' . $moduleDirName . '/viewforum.php?forum=' . $topicObject->getVar('forum_id');
89
+            	$notificationHandler->triggerEvent('global', 0, 'new_thread', $tags);
90
+            	$notificationHandler->triggerEvent('forum', $topicObject->getVar('forum_id'), 'new_thread', $tags);
91
+            	$postObject       = $topicHandler->getTopPost($id);
92
+            	$tags['POST_URL'] = $tags['THREAD_URL'] . '#forumpost' . $postObject->getVar('post_id');
93
+            	$notificationHandler->triggerEvent('thread', $id, 'new_post', $tags);
94
+            	$notificationHandler->triggerEvent('forum', $topicObject->getVar('forum_id'), 'new_post', $tags);
95
+            	$notificationHandler->triggerEvent('global', 0, 'new_post', $tags);
96
+            	$tags['POST_CONTENT'] = $postObject->getVar('post_text');
97
+            	$tags['POST_NAME']    = $postObject->getVar('subject');
98
+            	$notificationHandler->triggerEvent('global', 0, 'new_fullpost', $tags);
99
+            	$notificationHandler->triggerEvent('forum', $topicObject->getVar('forum_id'), 'new_fullpost', $tags);
100
+            	unset($postObject);
101
+        	}
102
+        	unset($topicsObject, $forumsObject);
103
+        	break;
104
+    	case 'delete':
105
+        	$forums = [];
106
+        	/** @var Newbb\TopicHandler|\XoopsPersistableObjectHandler $topicHandler */
107
+        	$topicsObject = $topicHandler->getAll(new \Criteria('topic_id', '(' . implode(',', $topic_id) . ')', 'IN'));
108
+        	foreach (array_keys($topicsObject) as $id) {
109
+            	/** @var Newbb\Topic $topicObject */
110
+            	$topicObject = $topicsObject[$id];
111
+            	// irmtfan should be set to false to not delete topic from database
112
+            	$topicHandler->delete($topicObject, false);
113
+            	$topicHandler->synchronization($topicObject);
114
+            	$forums[$topicObject->getVar('forum_id')] = 1;
115
+        	}
116 116
 
117
-        $criteria_forum = new \Criteria('forum_id', '(' . implode(',', array_keys($forums)) . ')', 'IN');
118
-        $forumsObject   = $forumHandler->getAll($criteria_forum);
119
-        foreach (array_keys($forumsObject) as $id) {
120
-            $forumHandler->synchronization($forumsObject[$id]);
121
-        }
122
-        unset($topicsObject, $forumsObject);
123
-        break;
124
-    case 'move':
125
-        if (Request::getInt('newforum', 0, 'POST')
126
-            && Request::getInt('newforum', 0, 'POST') !== $forum_id
127
-            && $forumHandler->getPermission(Request::getInt('newforum', 0, 'POST'), 'post')) {
128
-            $criteria = new \Criteria('topic_id', '(' . implode(',', $topic_id) . ')', 'IN');
129
-            //            /** @var Newbb\PostHandler $postHandler */
130
-            //            $postHandler = Newbb\Helper::getInstance()->getHandler('Post');
131
-            $postHandler->updateAll('forum_id', Request::getInt('newforum', 0, 'POST'), $criteria, true);
132
-            $topicHandler->updateAll('forum_id', Request::getInt('newforum', 0, 'POST'), $criteria, true);
133
-            $forumHandler->synchronization(Request::getInt('newforum', 0, 'POST'));
134
-            $forumHandler->synchronization($forum_id);
135
-        } else {
136
-            require_once $GLOBALS['xoops']->path('header.php');
137
-            //            /** @var Newbb\CategoryHandler $categoryHandler */
138
-            //            $categoryHandler = Newbb\Helper::getInstance()->getHandler('Category');
139
-            $categories = $categoryHandler->getByPermission('access');
140
-            $forums     = $forumHandler->getForumsByCategory(array_keys($categories), 'post', false);
117
+        	$criteria_forum = new \Criteria('forum_id', '(' . implode(',', array_keys($forums)) . ')', 'IN');
118
+        	$forumsObject   = $forumHandler->getAll($criteria_forum);
119
+        	foreach (array_keys($forumsObject) as $id) {
120
+            	$forumHandler->synchronization($forumsObject[$id]);
121
+        	}
122
+        	unset($topicsObject, $forumsObject);
123
+        	break;
124
+    	case 'move':
125
+        	if (Request::getInt('newforum', 0, 'POST')
126
+            	&& Request::getInt('newforum', 0, 'POST') !== $forum_id
127
+            	&& $forumHandler->getPermission(Request::getInt('newforum', 0, 'POST'), 'post')) {
128
+            	$criteria = new \Criteria('topic_id', '(' . implode(',', $topic_id) . ')', 'IN');
129
+            	//            /** @var Newbb\PostHandler $postHandler */
130
+            	//            $postHandler = Newbb\Helper::getInstance()->getHandler('Post');
131
+            	$postHandler->updateAll('forum_id', Request::getInt('newforum', 0, 'POST'), $criteria, true);
132
+            	$topicHandler->updateAll('forum_id', Request::getInt('newforum', 0, 'POST'), $criteria, true);
133
+            	$forumHandler->synchronization(Request::getInt('newforum', 0, 'POST'));
134
+            	$forumHandler->synchronization($forum_id);
135
+        	} else {
136
+            	require_once $GLOBALS['xoops']->path('header.php');
137
+            	//            /** @var Newbb\CategoryHandler $categoryHandler */
138
+            	//            $categoryHandler = Newbb\Helper::getInstance()->getHandler('Category');
139
+            	$categories = $categoryHandler->getByPermission('access');
140
+            	$forums     = $forumHandler->getForumsByCategory(array_keys($categories), 'post', false);
141 141
 
142
-            $box = '<select name="newforum" size="1">';
143
-            if (count($categories) > 0 && count($forums) > 0) {
144
-                foreach (array_keys($forums) as $key) {
142
+            	$box = '<select name="newforum" size="1">';
143
+            	if (count($categories) > 0 && count($forums) > 0) {
144
+                	foreach (array_keys($forums) as $key) {
145 145
 
146
-                    /** @var Newbb\Category[] $categories */
147
-                    $box .= "<option value='-1'>[" . $categories[$key]->getVar('cat_title') . ']</option>';
148
-                    foreach ($forums[$key] as $forumid => $_forum) {
149
-                        $box .= "<option value='" . $forumid . "'>-- " . $_forum['title'] . '</option>';
150
-                        if (!isset($_forum['sub'])) {
151
-                            continue;
152
-                        }
153
-                        foreach (array_keys($_forum['sub']) as $fid) {
154
-                            $box .= "<option value='" . $fid . "'>---- " . $_forum['sub'][$fid]['title'] . '</option>';
155
-                        }
156
-                    }
157
-                }
158
-            } else {
159
-                $box .= "<option value='-1'>" . _MD_NEWBB_NOFORUMINDB . '</option>';
160
-            }
161
-            $box .= '</select>';
162
-            unset($forums, $categories);
146
+                    	/** @var Newbb\Category[] $categories */
147
+                    	$box .= "<option value='-1'>[" . $categories[$key]->getVar('cat_title') . ']</option>';
148
+                    	foreach ($forums[$key] as $forumid => $_forum) {
149
+                        	$box .= "<option value='" . $forumid . "'>-- " . $_forum['title'] . '</option>';
150
+                        	if (!isset($_forum['sub'])) {
151
+                            	continue;
152
+                        	}
153
+                        	foreach (array_keys($_forum['sub']) as $fid) {
154
+                            	$box .= "<option value='" . $fid . "'>---- " . $_forum['sub'][$fid]['title'] . '</option>';
155
+                        	}
156
+                    	}
157
+                	}
158
+            	} else {
159
+                	$box .= "<option value='-1'>" . _MD_NEWBB_NOFORUMINDB . '</option>';
160
+            	}
161
+            	$box .= '</select>';
162
+            	unset($forums, $categories);
163 163
 
164
-            echo "<form action='" . Request::getString('PHP_SELF', '', 'SERVER') . "' method='post'>";
165
-            echo "<table border='0' cellpadding='1' cellspacing='0' align='center' width='95%'>";
166
-            echo "<tr><td class='bg2'>";
167
-            echo "<table border='0' cellpadding='1' cellspacing='1' width='100%'>";
168
-            echo '<tr><td class="bg3">' . _MD_NEWBB_MOVETOPICTO . '</td><td class="bg1">';
169
-            echo $box;
170
-            echo '</td></tr>';
171
-            echo '<tr class="bg3"><td colspan="2" align="center">';
172
-            echo "<input type='hidden' name='op' value='move' />";
173
-            echo "<input type='hidden' name='forum_id' value='{$forum_id}' />";
174
-            foreach ($topic_id as $id) {
175
-                echo "<input type='hidden' name='topic_id[]' value='" . $id . "' />";
176
-            }
177
-            echo "<input type='submit' name='submit' value='" . _SUBMIT . "' />";
178
-            echo '</td></tr></table></td></tr></table>';
179
-            echo '</form>';
180
-            require_once $GLOBALS['xoops']->path('footer.php');
181
-            exit();
182
-        }
183
-        break;
164
+            	echo "<form action='" . Request::getString('PHP_SELF', '', 'SERVER') . "' method='post'>";
165
+            	echo "<table border='0' cellpadding='1' cellspacing='0' align='center' width='95%'>";
166
+            	echo "<tr><td class='bg2'>";
167
+            	echo "<table border='0' cellpadding='1' cellspacing='1' width='100%'>";
168
+            	echo '<tr><td class="bg3">' . _MD_NEWBB_MOVETOPICTO . '</td><td class="bg1">';
169
+            	echo $box;
170
+            	echo '</td></tr>';
171
+            	echo '<tr class="bg3"><td colspan="2" align="center">';
172
+            	echo "<input type='hidden' name='op' value='move' />";
173
+            	echo "<input type='hidden' name='forum_id' value='{$forum_id}' />";
174
+            	foreach ($topic_id as $id) {
175
+                	echo "<input type='hidden' name='topic_id[]' value='" . $id . "' />";
176
+            	}
177
+            	echo "<input type='submit' name='submit' value='" . _SUBMIT . "' />";
178
+            	echo '</td></tr></table></td></tr></table>';
179
+            	echo '</form>';
180
+            	require_once $GLOBALS['xoops']->path('footer.php');
181
+            	exit();
182
+        	}
183
+        	break;
184 184
 }
185 185
 ///** @var Newbb\StatsHandler $statsHandler */
186 186
 //$statsHandler = Newbb\Helper::getInstance()->getHandler('Stats');
Please login to merge, or discard this patch.
polls.php 1 patch
Switch Indentation   +640 added lines, -640 removed lines patch added patch discarded remove patch
@@ -111,648 +111,648 @@
 block discarded – undo
111 111
     }
112 112
 }
113 113
 switch ($op) {
114
-    case 'add':
115
-        // new xoopspoll module
116
-        if ($pollModuleHandler->getVar('version') >= 140) {
117
-            echo '<h4>' . _MD_NEWBB_POLL_CREATNEWPOLL . "</h4>\n";
118
-            $pollObject->renderForm(Request::getString('PHP_SELF', '', 'SERVER'), 'post', ['topic_id' => $topic_id]);
119
-        // old xoopspoll or umfrage or any clone from them
120
-        } else {
121
-            $classOption  = $classPoll . 'Option';
122
-            $poll_form    = new \XoopsThemeForm(_MD_NEWBB_POLL_CREATNEWPOLL, 'poll_form', 'polls.php', 'post', true);
123
-            $author_label = new \XoopsFormLabel(_MD_NEWBB_POLL_AUTHOR, is_object($GLOBALS['xoopsUser']) ? ("<a href='"
124
-                                                                                                          . XOOPS_URL
125
-                                                                                                          . '/userinfo.php?uid='
126
-                                                                                                          . $GLOBALS['xoopsUser']->getVar('uid')
127
-                                                                                                          . "'>"
128
-                                                                                                          . newbbGetUnameFromId($GLOBALS['xoopsUser']->getVar('uid'), $GLOBALS['xoopsModuleConfig']['show_realname'])
129
-                                                                                                          . '</a>') : $GLOBALS['xoopsConfig']['anonymous']);
130
-            $poll_form->addElement($author_label);
131
-            $question_text = new \XoopsFormText(_MD_NEWBB_POLL_POLLQUESTION, 'question', 50, 255);
132
-            $poll_form->addElement($question_text);
133
-            $desc_tarea = new \XoopsFormTextarea(_MD_NEWBB_POLL_POLLDESC, 'description');
134
-            $poll_form->addElement($desc_tarea);
135
-            $currenttime = formatTimestamp(time(), 'Y-m-d H:i:s');
136
-            $endtime     = formatTimestamp(time() + 604800, 'Y-m-d H:i:s');
137
-            $expire_text = new \XoopsFormText(_MD_NEWBB_POLL_EXPIRATION . '<br><small>' . _MD_NEWBB_POLL_FORMAT . '<br>' . sprintf(_MD_NEWBB_POLL_CURRENTTIME, $currenttime) . '</small>', 'end_time', 30, 19, $endtime);
138
-            $poll_form->addElement($expire_text);
139
-
140
-            $weight_text = new \XoopsFormText(_MD_NEWBB_POLL_DISPLAYORDER, 'weight', 6, 5, 0);
141
-            $poll_form->addElement($weight_text);
142
-
143
-            $multi_yn = new \XoopsFormRadioYN(_MD_NEWBB_POLL_ALLOWMULTI, 'multiple', 0);
144
-            $poll_form->addElement($multi_yn);
145
-
146
-            $notify_yn = new \XoopsFormRadioYN(_MD_NEWBB_POLL_NOTIFY, 'notify', 1);
147
-            $poll_form->addElement($notify_yn);
148
-
149
-            $option_tray    = new \XoopsFormElementTray(_MD_NEWBB_POLL_POLLOPTIONS, '');
150
-            $barcolor_array = \XoopsLists::getImgListAsArray($GLOBALS['xoops']->path('modules/' . $GLOBALS['xoopsModuleConfig']['poll_module'] . '/assets/images/colorbars/'));
151
-            for ($i = 0; $i < 10; ++$i) {
152
-                $current_bar = ('blank.gif' !== current($barcolor_array)) ? current($barcolor_array) : next($barcolor_array);
153
-                $option_text = new \XoopsFormText('', 'option_text[]', 50, 255);
154
-                $option_tray->addElement($option_text);
155
-                $color_select = new \XoopsFormSelect('', "option_color[{$i}]", $current_bar);
156
-                $color_select->addOptionArray($barcolor_array);
157
-                $color_select->setExtra("onchange='showImgSelected(\"option_color_image[{$i}]\", \"option_color[{$i}]\", \"modules/" . $GLOBALS['xoopsModuleConfig']['poll_module'] . '/assets/images/colorbars", "", "' . XOOPS_URL . "\")'");
158
-                $color_label = new \XoopsFormLabel('', "<img src='"
159
-                                                      . XOOPS_URL
160
-                                                      . '/modules/'
161
-                                                      . $GLOBALS['xoopsModuleConfig']['poll_module']
162
-                                                      . '/assets/images/colorbars/'
163
-                                                      . $current_bar
164
-                                                      . "' name='option_color_image[{$i}]' id='option_color_image[{$i}]' width='30' align='bottom' height='15' alt='' /><br>");
165
-                $option_tray->addElement($color_select);
166
-                $option_tray->addElement($color_label);
167
-                if (!next($barcolor_array)) {
168
-                    reset($barcolor_array);
169
-                }
170
-                unset($color_select, $color_label);
171
-            }
172
-            $poll_form->addElement($option_tray);
173
-
174
-            $poll_form->addElement(new \XoopsFormHidden('op', 'save'));
175
-            $poll_form->addElement(new \XoopsFormHidden('topic_id', $topic_id));
176
-            $poll_form->addElement(new \XoopsFormHidden('poll_id', $poll_id));
177
-            $poll_form->addElement(new \XoopsFormHidden('user_id', is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getVar('uid') : 0));
178
-            $poll_form->addElement(new \XoopsFormButtonTray('poll_submit', _SUBMIT, 'submit'));
179
-            echo '<h4>' . _MD_NEWBB_POLL_POLLCONF . '</h4>';
180
-            $poll_form->display();
181
-        }
182
-        break; // op: add
183
-
184
-    case 'edit':
185
-        // new xoopspoll module
186
-        if ($pollModuleHandler->getVar('version') >= 140) {
187
-            echo '<h4>' . _MD_NEWBB_POLL_EDITPOLL . "</h4>\n";
188
-            $pollObject->renderForm(Request::getString('PHP_SELF', '', 'SERVER'), 'post', ['topic_id' => $topic_id]);
189
-        // old xoopspoll or umfrage or any clone from them
190
-        } else {
191
-            $classOption  = $classPoll . 'Option';
192
-            $poll_form    = new \XoopsThemeForm(_MD_NEWBB_POLL_EDITPOLL, 'poll_form', 'polls.php', 'post', true);
193
-            $author_label = new \XoopsFormLabel(_MD_NEWBB_POLL_AUTHOR, "<a href='" . XOOPS_URL . '/userinfo.php?uid=' . $pollObject->getVar('user_id') . "'>" . newbbGetUnameFromId($pollObject->getVar('user_id'), $GLOBALS['xoopsModuleConfig']['show_realname']) . '</a>');
194
-            $poll_form->addElement($author_label);
195
-            $question_text = new \XoopsFormText(_MD_NEWBB_POLL_POLLQUESTION, 'question', 50, 255, $pollObject->getVar('question', 'E'));
196
-            $poll_form->addElement($question_text);
197
-            $desc_tarea = new \XoopsFormTextarea(_MD_NEWBB_POLL_POLLDESC, 'description', $pollObject->getVar('description', 'E'));
198
-            $poll_form->addElement($desc_tarea);
199
-            $date = formatTimestamp($pollObject->getVar('end_time'), 'Y-m-d H:i:s'); // important "Y-m-d H:i:s" use in jdf function
200
-            if (!$pollObject->hasExpired()) {
201
-                $expire_text = new \XoopsFormText(_MD_NEWBB_POLL_EXPIRATION . '<br><small>' . _MD_NEWBB_POLL_FORMAT . '<br>' . sprintf(_MD_NEWBB_POLL_CURRENTTIME, formatTimestamp(time(), 'Y-m-d H:i:s')) . '</small>', 'end_time', 20, 19, $date);
202
-                $poll_form->addElement($expire_text);
203
-            } else {
204
-                // irmtfan full URL - add topic_id
205
-                $restart_label = new \XoopsFormLabel(
206
-                    _MD_NEWBB_POLL_EXPIRATION,
207
-                                                    sprintf(_MD_NEWBB_POLL_EXPIREDAT, $date) . "<br><a href='" . XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . "/polls.php?op=restart&amp;poll_id={$poll_id}&amp;topic_id={$topic_id}'>" . _MD_NEWBB_POLL_RESTART . '</a>'
208
-                );
209
-                $poll_form->addElement($restart_label);
210
-            }
211
-            $weight_text = new \XoopsFormText(_MD_NEWBB_POLL_DISPLAYORDER, 'weight', 6, 5, $pollObject->getVar('weight'));
212
-            $poll_form->addElement($weight_text);
213
-            $multi_yn = new \XoopsFormRadioYN(_MD_NEWBB_POLL_ALLOWMULTI, 'multiple', $pollObject->getVar('multiple'));
214
-            $poll_form->addElement($multi_yn);
215
-            $options_arr  =& $classOption::getAllByPollId($poll_id);
216
-            $notify_value = 1;
217
-            if (0 !== $pollObject->getVar('mail_status')) {
218
-                $notify_value = 0;
219
-            }
220
-            $notify_yn = new \XoopsFormRadioYN(_MD_NEWBB_POLL_NOTIFY, 'notify', $notify_value);
221
-            $poll_form->addElement($notify_yn);
222
-            $option_tray    = new \XoopsFormElementTray(_MD_NEWBB_POLL_POLLOPTIONS, '');
223
-            $barcolor_array = \XoopsLists::getImgListAsArray($GLOBALS['xoops']->path("modules/{$GLOBALS['xoopsModuleConfig']['poll_module']}/assets/images/colorbars/"));
224
-            $i              = 0;
225
-            foreach ($options_arr as $option) {
226
-                /** @var \XoopsPoll $option */
227
-                $option_tray->addElement(new \XoopsFormText('', 'option_text[]', 50, 255, $option->getVar('option_text')));
228
-                $option_tray->addElement(new \XoopsFormHidden('option_id[]', $option->getVar('option_id')));
229
-                $color_select = new \XoopsFormSelect('', 'option_color[{$i}]', $option->getVar('option_color'));
230
-                $color_select->addOptionArray($barcolor_array);
231
-                $color_select->setExtra("onchange='showImgSelected(\"option_color_image[{$i}]\", \"option_color[" . $i . "]\", \"modules/{$GLOBALS['xoopsModuleConfig']['poll_module']}/assets/images/colorbars\", \"\", \"" . XOOPS_URL . "\")'");
232
-                $color_label = new \XoopsFormLabel('', "<img src='"
233
-                                                      . $GLOBALS['xoops']->url("modules/{$GLOBALS['xoopsModuleConfig']['poll_module']}/assets/images/colorbars/" . $option->getVar('option_color', 'E'))
234
-                                                      . "' name='option_color_image[{$i}]' id='option_color_image[{$i}]' class='alignbottom' width='30' height='15' alt='' /><br>");
235
-                $option_tray->addElement($color_select);
236
-                $option_tray->addElement($color_label);
237
-                unset($color_select, $color_label);
238
-                ++$i;
239
-            }
240
-            // irmtfan full URL
241
-            $more_label = new \XoopsFormLabel('', "<br><a href='" . XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . "/polls.php?op=addmore&amp;poll_id={$poll_id}&amp;topic_id={$topic_id}'>" . _MD_NEWBB_POLL_ADDMORE . '</a>');
242
-            $option_tray->addElement($more_label);
243
-            $poll_form->addElement($option_tray);
244
-            $poll_form->addElement(new \XoopsFormHidden('op', 'update'));
245
-            $poll_form->addElement(new \XoopsFormHidden('topic_id', $topic_id));
246
-            $poll_form->addElement(new \XoopsFormHidden('poll_id', $poll_id));
247
-            $poll_form->addElement(new \XoopsFormButtonTray('poll_submit', _SUBMIT, 'submit'));
248
-
249
-            echo '<h4>' . _MD_NEWBB_POLL_POLLCONF . "</h4>\n";
250
-            $poll_form->display();
251
-        }
252
-        break; // op: edit
253
-
254
-    case 'save':
255
-        // old xoopspoll or umfrage or any clone from them
256
-        if ($pollModuleHandler->getVar('version') < 140) {
257
-            // check security token
258
-            if (!$GLOBALS['xoopsSecurity']->check()) {
259
-                redirect_header(Request::getString('PHP_SELF', '', 'SERVER'), 2, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
260
-            }
261
-            /*
114
+    	case 'add':
115
+        	// new xoopspoll module
116
+        	if ($pollModuleHandler->getVar('version') >= 140) {
117
+            	echo '<h4>' . _MD_NEWBB_POLL_CREATNEWPOLL . "</h4>\n";
118
+            	$pollObject->renderForm(Request::getString('PHP_SELF', '', 'SERVER'), 'post', ['topic_id' => $topic_id]);
119
+        	// old xoopspoll or umfrage or any clone from them
120
+        	} else {
121
+            	$classOption  = $classPoll . 'Option';
122
+            	$poll_form    = new \XoopsThemeForm(_MD_NEWBB_POLL_CREATNEWPOLL, 'poll_form', 'polls.php', 'post', true);
123
+            	$author_label = new \XoopsFormLabel(_MD_NEWBB_POLL_AUTHOR, is_object($GLOBALS['xoopsUser']) ? ("<a href='"
124
+                                                                                                          	. XOOPS_URL
125
+                                                                                                          	. '/userinfo.php?uid='
126
+                                                                                                          	. $GLOBALS['xoopsUser']->getVar('uid')
127
+                                                                                                          	. "'>"
128
+                                                                                                          	. newbbGetUnameFromId($GLOBALS['xoopsUser']->getVar('uid'), $GLOBALS['xoopsModuleConfig']['show_realname'])
129
+                                                                                                          	. '</a>') : $GLOBALS['xoopsConfig']['anonymous']);
130
+            	$poll_form->addElement($author_label);
131
+            	$question_text = new \XoopsFormText(_MD_NEWBB_POLL_POLLQUESTION, 'question', 50, 255);
132
+            	$poll_form->addElement($question_text);
133
+            	$desc_tarea = new \XoopsFormTextarea(_MD_NEWBB_POLL_POLLDESC, 'description');
134
+            	$poll_form->addElement($desc_tarea);
135
+            	$currenttime = formatTimestamp(time(), 'Y-m-d H:i:s');
136
+            	$endtime     = formatTimestamp(time() + 604800, 'Y-m-d H:i:s');
137
+            	$expire_text = new \XoopsFormText(_MD_NEWBB_POLL_EXPIRATION . '<br><small>' . _MD_NEWBB_POLL_FORMAT . '<br>' . sprintf(_MD_NEWBB_POLL_CURRENTTIME, $currenttime) . '</small>', 'end_time', 30, 19, $endtime);
138
+            	$poll_form->addElement($expire_text);
139
+
140
+            	$weight_text = new \XoopsFormText(_MD_NEWBB_POLL_DISPLAYORDER, 'weight', 6, 5, 0);
141
+            	$poll_form->addElement($weight_text);
142
+
143
+            	$multi_yn = new \XoopsFormRadioYN(_MD_NEWBB_POLL_ALLOWMULTI, 'multiple', 0);
144
+            	$poll_form->addElement($multi_yn);
145
+
146
+            	$notify_yn = new \XoopsFormRadioYN(_MD_NEWBB_POLL_NOTIFY, 'notify', 1);
147
+            	$poll_form->addElement($notify_yn);
148
+
149
+            	$option_tray    = new \XoopsFormElementTray(_MD_NEWBB_POLL_POLLOPTIONS, '');
150
+            	$barcolor_array = \XoopsLists::getImgListAsArray($GLOBALS['xoops']->path('modules/' . $GLOBALS['xoopsModuleConfig']['poll_module'] . '/assets/images/colorbars/'));
151
+            	for ($i = 0; $i < 10; ++$i) {
152
+                	$current_bar = ('blank.gif' !== current($barcolor_array)) ? current($barcolor_array) : next($barcolor_array);
153
+                	$option_text = new \XoopsFormText('', 'option_text[]', 50, 255);
154
+                	$option_tray->addElement($option_text);
155
+                	$color_select = new \XoopsFormSelect('', "option_color[{$i}]", $current_bar);
156
+                	$color_select->addOptionArray($barcolor_array);
157
+                	$color_select->setExtra("onchange='showImgSelected(\"option_color_image[{$i}]\", \"option_color[{$i}]\", \"modules/" . $GLOBALS['xoopsModuleConfig']['poll_module'] . '/assets/images/colorbars", "", "' . XOOPS_URL . "\")'");
158
+                	$color_label = new \XoopsFormLabel('', "<img src='"
159
+                                                      	. XOOPS_URL
160
+                                                      	. '/modules/'
161
+                                                      	. $GLOBALS['xoopsModuleConfig']['poll_module']
162
+                                                      	. '/assets/images/colorbars/'
163
+                                                      	. $current_bar
164
+                                                      	. "' name='option_color_image[{$i}]' id='option_color_image[{$i}]' width='30' align='bottom' height='15' alt='' /><br>");
165
+                	$option_tray->addElement($color_select);
166
+                	$option_tray->addElement($color_label);
167
+                	if (!next($barcolor_array)) {
168
+                    	reset($barcolor_array);
169
+                	}
170
+                	unset($color_select, $color_label);
171
+            	}
172
+            	$poll_form->addElement($option_tray);
173
+
174
+            	$poll_form->addElement(new \XoopsFormHidden('op', 'save'));
175
+            	$poll_form->addElement(new \XoopsFormHidden('topic_id', $topic_id));
176
+            	$poll_form->addElement(new \XoopsFormHidden('poll_id', $poll_id));
177
+            	$poll_form->addElement(new \XoopsFormHidden('user_id', is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getVar('uid') : 0));
178
+            	$poll_form->addElement(new \XoopsFormButtonTray('poll_submit', _SUBMIT, 'submit'));
179
+            	echo '<h4>' . _MD_NEWBB_POLL_POLLCONF . '</h4>';
180
+            	$poll_form->display();
181
+        	}
182
+        	break; // op: add
183
+
184
+    	case 'edit':
185
+        	// new xoopspoll module
186
+        	if ($pollModuleHandler->getVar('version') >= 140) {
187
+            	echo '<h4>' . _MD_NEWBB_POLL_EDITPOLL . "</h4>\n";
188
+            	$pollObject->renderForm(Request::getString('PHP_SELF', '', 'SERVER'), 'post', ['topic_id' => $topic_id]);
189
+        	// old xoopspoll or umfrage or any clone from them
190
+        	} else {
191
+            	$classOption  = $classPoll . 'Option';
192
+            	$poll_form    = new \XoopsThemeForm(_MD_NEWBB_POLL_EDITPOLL, 'poll_form', 'polls.php', 'post', true);
193
+            	$author_label = new \XoopsFormLabel(_MD_NEWBB_POLL_AUTHOR, "<a href='" . XOOPS_URL . '/userinfo.php?uid=' . $pollObject->getVar('user_id') . "'>" . newbbGetUnameFromId($pollObject->getVar('user_id'), $GLOBALS['xoopsModuleConfig']['show_realname']) . '</a>');
194
+            	$poll_form->addElement($author_label);
195
+            	$question_text = new \XoopsFormText(_MD_NEWBB_POLL_POLLQUESTION, 'question', 50, 255, $pollObject->getVar('question', 'E'));
196
+            	$poll_form->addElement($question_text);
197
+            	$desc_tarea = new \XoopsFormTextarea(_MD_NEWBB_POLL_POLLDESC, 'description', $pollObject->getVar('description', 'E'));
198
+            	$poll_form->addElement($desc_tarea);
199
+            	$date = formatTimestamp($pollObject->getVar('end_time'), 'Y-m-d H:i:s'); // important "Y-m-d H:i:s" use in jdf function
200
+            	if (!$pollObject->hasExpired()) {
201
+                	$expire_text = new \XoopsFormText(_MD_NEWBB_POLL_EXPIRATION . '<br><small>' . _MD_NEWBB_POLL_FORMAT . '<br>' . sprintf(_MD_NEWBB_POLL_CURRENTTIME, formatTimestamp(time(), 'Y-m-d H:i:s')) . '</small>', 'end_time', 20, 19, $date);
202
+                	$poll_form->addElement($expire_text);
203
+            	} else {
204
+                	// irmtfan full URL - add topic_id
205
+                	$restart_label = new \XoopsFormLabel(
206
+                    	_MD_NEWBB_POLL_EXPIRATION,
207
+                                                    	sprintf(_MD_NEWBB_POLL_EXPIREDAT, $date) . "<br><a href='" . XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . "/polls.php?op=restart&amp;poll_id={$poll_id}&amp;topic_id={$topic_id}'>" . _MD_NEWBB_POLL_RESTART . '</a>'
208
+                	);
209
+                	$poll_form->addElement($restart_label);
210
+            	}
211
+            	$weight_text = new \XoopsFormText(_MD_NEWBB_POLL_DISPLAYORDER, 'weight', 6, 5, $pollObject->getVar('weight'));
212
+            	$poll_form->addElement($weight_text);
213
+            	$multi_yn = new \XoopsFormRadioYN(_MD_NEWBB_POLL_ALLOWMULTI, 'multiple', $pollObject->getVar('multiple'));
214
+            	$poll_form->addElement($multi_yn);
215
+            	$options_arr  =& $classOption::getAllByPollId($poll_id);
216
+            	$notify_value = 1;
217
+            	if (0 !== $pollObject->getVar('mail_status')) {
218
+                	$notify_value = 0;
219
+            	}
220
+            	$notify_yn = new \XoopsFormRadioYN(_MD_NEWBB_POLL_NOTIFY, 'notify', $notify_value);
221
+            	$poll_form->addElement($notify_yn);
222
+            	$option_tray    = new \XoopsFormElementTray(_MD_NEWBB_POLL_POLLOPTIONS, '');
223
+            	$barcolor_array = \XoopsLists::getImgListAsArray($GLOBALS['xoops']->path("modules/{$GLOBALS['xoopsModuleConfig']['poll_module']}/assets/images/colorbars/"));
224
+            	$i              = 0;
225
+            	foreach ($options_arr as $option) {
226
+                	/** @var \XoopsPoll $option */
227
+                	$option_tray->addElement(new \XoopsFormText('', 'option_text[]', 50, 255, $option->getVar('option_text')));
228
+                	$option_tray->addElement(new \XoopsFormHidden('option_id[]', $option->getVar('option_id')));
229
+                	$color_select = new \XoopsFormSelect('', 'option_color[{$i}]', $option->getVar('option_color'));
230
+                	$color_select->addOptionArray($barcolor_array);
231
+                	$color_select->setExtra("onchange='showImgSelected(\"option_color_image[{$i}]\", \"option_color[" . $i . "]\", \"modules/{$GLOBALS['xoopsModuleConfig']['poll_module']}/assets/images/colorbars\", \"\", \"" . XOOPS_URL . "\")'");
232
+                	$color_label = new \XoopsFormLabel('', "<img src='"
233
+                                                      	. $GLOBALS['xoops']->url("modules/{$GLOBALS['xoopsModuleConfig']['poll_module']}/assets/images/colorbars/" . $option->getVar('option_color', 'E'))
234
+                                                      	. "' name='option_color_image[{$i}]' id='option_color_image[{$i}]' class='alignbottom' width='30' height='15' alt='' /><br>");
235
+                	$option_tray->addElement($color_select);
236
+                	$option_tray->addElement($color_label);
237
+                	unset($color_select, $color_label);
238
+                	++$i;
239
+            	}
240
+            	// irmtfan full URL
241
+            	$more_label = new \XoopsFormLabel('', "<br><a href='" . XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . "/polls.php?op=addmore&amp;poll_id={$poll_id}&amp;topic_id={$topic_id}'>" . _MD_NEWBB_POLL_ADDMORE . '</a>');
242
+            	$option_tray->addElement($more_label);
243
+            	$poll_form->addElement($option_tray);
244
+            	$poll_form->addElement(new \XoopsFormHidden('op', 'update'));
245
+            	$poll_form->addElement(new \XoopsFormHidden('topic_id', $topic_id));
246
+            	$poll_form->addElement(new \XoopsFormHidden('poll_id', $poll_id));
247
+            	$poll_form->addElement(new \XoopsFormButtonTray('poll_submit', _SUBMIT, 'submit'));
248
+
249
+            	echo '<h4>' . _MD_NEWBB_POLL_POLLCONF . "</h4>\n";
250
+            	$poll_form->display();
251
+        	}
252
+        	break; // op: edit
253
+
254
+    	case 'save':
255
+        	// old xoopspoll or umfrage or any clone from them
256
+        	if ($pollModuleHandler->getVar('version') < 140) {
257
+            	// check security token
258
+            	if (!$GLOBALS['xoopsSecurity']->check()) {
259
+                	redirect_header(Request::getString('PHP_SELF', '', 'SERVER'), 2, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
260
+            	}
261
+            	/*
262 262
              * The option check should be done before submitting
263 263
              */
264
-            $option_empty = true;
265
-            if (!Request::getString('option_text', '', 'POST')) {
266
-                // irmtfan - issue with javascript:history.go(-1)
267
-                redirect_header(Request::getString('HTTP_REFERER', '', 'SERVER'), 2, _MD_NEWBB_ERROROCCURED . ': ' . _MD_NEWBB_POLL_POLLOPTIONS . ' !');
268
-            }
269
-            $option_text = Request::getArray('option_text', '', 'POST');
270
-            foreach ($option_text as $optxt) {
271
-                if ('' !== trim($optxt)) {
272
-                    $option_empty = false;
273
-                    break;
274
-                }
275
-            }
276
-            if ($option_empty) {
277
-                // irmtfan - issue with javascript:history.go(-1)
278
-                redirect_header(Request::getString('HTTP_REFERER', '', 'SERVER'), 2, _MD_NEWBB_ERROROCCURED . ': ' . _MD_NEWBB_POLL_POLLOPTIONS . ' !');
279
-            }
280
-            $pollObject->setVar('question', Request::getString('question', '', 'POST'));
281
-            $pollObject->setVar('description', Request::getString('description', '', 'POST'));
282
-            $end_time = Request::getString('end_time', '', 'POST'); // (empty($_POST['end_time'])) ? "" : $_POST['end_time'];
283
-            if ('' !== $end_time) {
284
-                $timezone = is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getVar('timezone') : null;
285
-                $pollObject->setVar('end_time', userTimeToServerTime(method_exists('XoopsLocal', 'strtotime') ? XoopsLocal::strtotime($end_time) : strtotime($end_time), $timezone));
286
-            } else {
287
-                // if expiration date is not set, set it to 10 days from now
288
-                $pollObject->setVar('end_time', time() + (86400 * 10));
289
-            }
290
-
291
-            $pollObject->setVar('display', 0);
292
-            $pollObject->setVar('weight', Request::getInt('weight', 0, 'POST'));
293
-            $pollObject->setVar('multiple', Request::getInt('multiple', 0, 'POST'));
294
-            $pollObject->setVar('user_id', Request::getInt('user_id', 0, 'POST'));
295
-            if (Request::getInt('notify', 0, 'POST') && $end_time > time()) {
296
-                // if notify, set mail status to "not mailed"
297
-                $pollObject->setVar('mail_status', Xoopspoll\Constants::POLL_NOT_MAILED);
298
-            } else {
299
-                // if not notify, set mail status to already "mailed"
300
-                $pollObject->setVar('mail_status', Xoopspoll\Constants::POLL_MAILED);
301
-            }
302
-            $new_poll_id = $pollObject->store();
303
-            if (empty($new_poll_id)) {
304
-                xoops_error($pollObject->getHtmlErrors);
305
-                break;
306
-            }
307
-            $i            = 0;
308
-            $option_color = Request::getArray('option_color', null, 'POST');
309
-            $classOption  = $classPoll . 'Option';
310
-            foreach ($option_text as $optxt) {
311
-                $optxt = trim($optxt);
312
-                /** @var Xoopspoll\Option $optionObject */
313
-                $optionObject = new $classOption();
314
-                if ('' !== $optxt) {
315
-                    $optionObject->setVar('option_text', $optxt);
316
-                    $optionObject->setVar('option_color', $option_color[$i]);
317
-                    $optionObject->setVar('poll_id', $new_poll_id);
318
-                    $optionObject->store();
319
-                }
320
-                ++$i;
321
-            }
322
-            // clear the template cache so changes take effect immediately
323
-            require_once $GLOBALS['xoops']->path('class/template.php');
324
-            xoops_template_clear_module_cache($GLOBALS['xoopsModule']->getVar('mid'));
325
-            xoops_template_clear_module_cache($pollModuleHandler->getVar('mid'));
326
-
327
-            // update topic to indicate it has a poll
328
-            $topicObject->setVar('topic_haspoll', 1);
329
-            $topicObject->setVar('poll_id', $new_poll_id);
330
-            $success = $topicHandler->insert($topicObject);
331
-            if (!$success) {
332
-                xoops_error($topicHandler->getHtmlErrors());
333
-            } else {
334
-                redirect_header("viewtopic.php?topic_id={$topic_id}", 2, _MD_NEWBB_POLL_DBUPDATED);
335
-            }
336
-            break;// op: save
337
-        }
338
-    // no break
339
-    case 'update':
340
-        // check security token
341
-        if (!$GLOBALS['xoopsSecurity']->check()) {
342
-            redirect_header(Request::getString('PHP_SELF', '', 'SERVER'), 2, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
343
-        }
344
-        /* make sure there's at least one option */
345
-        $option_text   = Request::getString('option_text', '', 'POST');
346
-        $option_string = is_array($option_text) ? implode('', $option_text) : $option_text;
347
-        $option_string = trim($option_string);
348
-        if ('' === $option_string) {
349
-            redirect_header(Request::getString('HTTP_REFERER', '', 'SERVER'), 2, _MD_NEWBB_ERROROCCURED . ': ' . _MD_NEWBB_POLL_POLLOPTIONS . ' !');
350
-        }
351
-
352
-        // new xoopspoll module
353
-        if ($pollModuleHandler->getVar('version') >= 140) {
354
-            /** @var Xoopspoll\OptionHandler $xpOptHandler */
355
-            $xpOptHandler = Xoopspoll\Helper::getInstance()->getHandler('Option');
356
-            /** @var Xoopspoll\LogHandler $xpLogHandler */
357
-            $xpLogHandler = Xoopspoll\Helper::getInstance()->getHandler('Log');
358
-            //            $classRequest = ucfirst($GLOBALS['xoopsModuleConfig']["poll_module"]) . "Request";
359
-            $classConstants   = new XoopsModules\Xoopspoll\Constants();
360
-            $notify           = Request::getInt('notify', $classConstants::NOTIFICATION_ENABLED, 'POST');
361
-            $currentTimestamp = time();
362
-            //$xuEndTimestamp   = method_exists('XoopsLocal', 'strtotime') ? XoopsLocal::strtotime(Request::getString('xu_end_time', null, 'POST'))
363
-            //                                                             : strtotime(Request::getString('xu_end_time', null, 'POST'));
364
-            $xuEndTimestamp = strtotime(Request::getString('xu_end_time', null, 'POST'));
365
-            $endTimestamp   = (!Request::getString('xu_end_time', null, 'POST')) ? ($currentTimestamp + $classConstants::DEFAULT_POLL_DURATION) : userTimeToServerTime($xuEndTimestamp);
366
-            //$xuStartTimestamp = method_exists('XoopsLocal', 'strtotime') ? XoopsLocal::strtotime(Request::getString('xu_start_time', null, 'POST'))
367
-            //                                                             : strtotime(Request::getString('xu_start_time', null, 'POST'));
368
-            $xuStartTimestamp = strtotime(Request::getString('xu_start_time', null, 'POST'));
369
-            $startTimestamp   = (!Request::getString('xu_start_time', null, 'POST')) ? ($endTimestamp - $classConstants::DEFAULT_POLL_DURATION) : userTimeToServerTime($xuStartTimestamp);
370
-
371
-            //  don't allow changing start time if there are votes in the log
372
-            if (($startTimestamp < $pollObject->getVar('start_time'))
373
-                && ($xpLogHandler->getTotalVotesByPollId($poll_id) > 0)) {
374
-                $startTimestamp = $pollObject->getVar('start_time'); //don't change start time
375
-            }
376
-
377
-            $poll_vars = [
378
-                'user_id'     => Request::getInt('user_id', $GLOBALS['xoopsUser']->uid(), 'POST'),
379
-                'question'    => Request::getString('question', null, 'POST'),
380
-                'description' => Request::getText('description', null, 'POST'),
381
-                'mail_status' => ($classConstants::NOTIFICATION_ENABLED == $notify) ? $classConstants::POLL_NOT_MAILED : $classConstants::POLL_MAILED,
382
-                'mail_voter'  => Request::getInt('mail_voter', $classConstants::NOT_MAIL_POLL_TO_VOTER, 'POST'),
383
-                'start_time'  => $startTimestamp,
384
-                'end_time'    => $endTimestamp,
385
-                'display'     => Request::getInt('display', $classConstants::DO_NOT_DISPLAY_POLL_IN_BLOCK, 'POST'),
386
-                'visibility'  => Request::getInt('visibility', $classConstants::HIDE_NEVER, 'POST'),
387
-                'weight'      => Request::getInt('weight', $classConstants::DEFAULT_WEIGHT, 'POST'),
388
-                'multiple'    => Request::getInt('multiple', $classConstants::NOT_MULTIPLE_SELECT_POLL, 'POST'),
389
-                'multilimit'  => Request::getInt('multilimit', $classConstants::MULTIPLE_SELECT_LIMITLESS, 'POST'),
390
-                'anonymous'   => Request::getInt('anonymous', $classConstants::ANONYMOUS_VOTING_DISALLOWED, 'POST')
391
-            ];
392
-            $pollObject->setVars($poll_vars);
393
-            $poll_id = $xpPollHandler->insert($pollObject);
394
-            if (!$poll_id) {
395
-                $err = $pollObject->getHtmlErrors();
396
-                exit($err);
397
-            }
398
-
399
-            // now get the options
400
-            $optionIdArray    = Request::getArray('option_id', [], 'POST');
401
-            $optionIdArray    = array_map('intval', $optionIdArray);
402
-            $optionTextArray  = Request::getArray('option_text', [], 'POST');
403
-            $optionColorArray = Request::getArray('option_color', [], 'POST');
404
-
405
-            foreach ($optionIdArray as $key => $oId) {
406
-                if (!empty($oId) && ($optionObject = $xpOptHandler->get($oId))) {
407
-                    // existing option object so need to update it
408
-                    $optionTextArray[$key] = trim($optionTextArray[$key]);
409
-                    if ('' === $optionTextArray[$key]) {
410
-                        // want to delete this option
411
-                        if (false !== $xpOptHandler->delete($optionObject)) {
412
-                            // now remove it from the log
413
-                            $xpLogHandler->deleteByOptionId($optionObject->getVar('option_id'));
414
-                            //update vote count in poll
415
-                            $xpPollHandler->updateCount($pollObject);
416
-                        } else {
417
-                            xoops_error($xpLogHandler->getHtmlErrors());
418
-                            break;
419
-                        }
420
-                    } else {
421
-                        $optionObject->setVar('option_text', $optionTextArray[$key]);
422
-                        $optionObject->setVar('option_color', $optionColorArray[$key]);
423
-                        $optionObject->setVar('poll_id', $poll_id);
424
-                        $xpOptHandler->insert($optionObject);
425
-                    }
426
-                } else {
427
-                    // new option object
428
-                    $optionObject          = $xpOptHandler->create();
429
-                    $optionTextArray[$key] = trim($optionTextArray[$key]);
430
-                    if ('' !== $optionTextArray[$key]) { // ignore if text is empty
431
-                        $optionObject->setVar('option_text', $optionTextArray[$key]);
432
-                        $optionObject->setVar('option_color', $optionColorArray[$key]);
433
-                        $optionObject->setVar('poll_id', $poll_id);
434
-                        $xpOptHandler->insert($optionObject);
435
-                    }
436
-                    unset($optionObject);
437
-                }
438
-            }
439
-            // old xoopspoll or umfrage or any clone from them
440
-        } else {
441
-            $pollObject->setVar('question', Request::getString('question', '', 'POST'));
442
-            $pollObject->setVar('description', Request::getString('description', '', 'POST'));
443
-
444
-            $end_time = Request::getString('end_time', '', 'POST');
445
-            if ('' !== $end_time) {
446
-                $timezone = is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getVar('timezone') : null;
447
-                $pollObject->setVar('end_time', userTimeToServerTime(method_exists('XoopsLocal', 'strtotime') ? XoopsLocal::strtotime($end_time) : strtotime($end_time), $timezone));
448
-            }
449
-            $pollObject->setVar('display', 0);
450
-            $pollObject->setVar('weight', Request::getInt('weight', 0, 'POST'));
451
-            $pollObject->setVar('multiple', Request::getInt('multiple', 0, 'POST'));
452
-            $pollObject->setVar('user_id', Request::getInt('user_id', 0, 'POST'));
453
-            if (Request::getInt('notify', 0, 'POST') && $end_time > time()) {
454
-                // if notify, set mail status to "not mailed"
455
-                $pollObject->setVar('mail_status', $classConstants::POLL_NOT_MAILED);
456
-            } else {
457
-                // if not notify, set mail status to already "mailed"
458
-                $pollObject->setVar('mail_status', $classConstants::POLL_MAILED);
459
-            }
460
-
461
-            if (!$pollObject->store()) {
462
-                xoops_error($pollObject->getHtmlErrors);
463
-                break;
464
-            }
465
-            $i            = 0;
466
-            $option_id    = Request::getArray('option_id', null, 'POST');
467
-            $option_color = Request::getArray('option_color', null, 'POST');
468
-            $classOption  = $classPoll . 'Option';
469
-            $classLog     = $classPoll . 'Log';
470
-            foreach ($option_id as $opid) {
471
-                $optionObject    = new $classOption($opid);
472
-                $option_text[$i] = trim($option_text[$i]);
473
-                if ('' !== $option_text[$i]) {
474
-                    $optionObject->setVar('option_text', $option_text[$i]);
475
-                    $optionObject->setVar('option_color', $option_color[$i]);
476
-                    $optionObject->store();
477
-                } else {
478
-                    if (false !== $optionObject->delete()) {
479
-                        $classLog::deleteByOptionId($option->getVar('option_id'));
480
-                    }
481
-                }
482
-                ++$i;
483
-            }
484
-            $pollObject->updateCount();
485
-        }
486
-        // clear the template cache so changes take effect immediately
487
-        require_once $GLOBALS['xoops']->path('class/template.php');
488
-        xoops_template_clear_module_cache($GLOBALS['xoopsModule']->getVar('mid'));
489
-        xoops_template_clear_module_cache($pollModuleHandler->getVar('mid'));
490
-
491
-        // update topic to indicate it has a poll
492
-        $topicObject->setVar('topic_haspoll', 1);
493
-        $topicObject->setVar('poll_id', $pollObject->getVar('poll_id'));
494
-        $success = $topicHandler->insert($topicObject);
495
-        if (!$success) {
496
-            xoops_error($topicHandler->getHtmlErrors());
497
-        } else {
498
-            redirect_header("viewtopic.php?topic_id={$topic_id}", 2, _MD_NEWBB_POLL_DBUPDATED);
499
-        }
500
-        break;// op: save | update
501
-
502
-    case 'addmore':
503
-        $question = $pollObject->getVar('question');
504
-        unset($pollObject);
505
-        $poll_form = new \XoopsThemeForm(_MD_NEWBB_POLL_ADDMORE, 'poll_form', 'polls.php', 'post', true);
506
-        $poll_form->addElement(new \XoopsFormLabel(_MD_NEWBB_POLL_POLLQUESTION, $question));
507
-        // new xoopspoll module
508
-        if ($pollModuleHandler->getVar('version') >= 140) {
509
-            $xpOptHandler = Xoopspoll\Helper::getInstance()->getHandler('Option');
510
-            $option_tray  = $xpOptHandler->renderOptionFormTray($poll_id);
511
-        // old xoopspoll or umfrage or any clone from them
512
-        } else {
513
-            $option_tray    = new \XoopsFormElementTray(_MD_NEWBB_POLL_POLLOPTIONS, '');
514
-            $barcolor_array = \XoopsLists::getImgListAsArray($GLOBALS['xoops']->path('modules/' . $GLOBALS['xoopsModuleConfig']['poll_module'] . '/assets/images/colorbars/'));
515
-            for ($i = 0; $i < 10; ++$i) {
516
-                $current_bar = ('blank.gif' !== current($barcolor_array)) ? current($barcolor_array) : next($barcolor_array);
517
-                $option_text = new \XoopsFormText('', 'option_text[]', 50, 255);
518
-                $option_tray->addElement($option_text);
519
-                $color_select = new \XoopsFormSelect('', "option_color[{$i}]", $current_bar);
520
-                $color_select->addOptionArray($barcolor_array);
521
-                $color_select->setExtra("onchange='showImgSelected(\"option_color_image[{$i}]\", \"option_color[{$i}]\", \"modules/{$GLOBALS['xoopsModuleConfig']['poll_module']}/assets/images/colorbars\", \"\", \"" . XOOPS_URL . "\")'");
522
-                $color_label = new \XoopsFormLabel('', "<img src='"
523
-                                                      . $GLOBALS['xoops']->url("modules/{$GLOBALS['xoopsModuleConfig']['poll_module']}/assets/images/colorbars/{$current_bar}")
524
-                                                      . "' name='option_color_image[{$i}]' id='option_color_image[{$i}]' class='alignbottom' width='30' height='15' alt='' /><br>");
525
-                $option_tray->addElement($color_select);
526
-                $option_tray->addElement($color_label);
527
-                unset($color_select, $color_label, $option_text);
528
-                if (!next($barcolor_array)) {
529
-                    reset($barcolor_array);
530
-                }
531
-            }
532
-        }
533
-        $poll_form->addElement($option_tray);
534
-        $poll_form->addElement(new \XoopsFormButtonTray('poll_submit', _SUBMIT, 'submit'));
535
-        $poll_form->addElement(new \XoopsFormHidden('op', 'savemore'));
536
-        $poll_form->addElement(new \XoopsFormHidden('topic_id', $topic_id));
537
-        $poll_form->addElement(new \XoopsFormHidden('poll_id', $poll_id));
538
-
539
-        echo '<h4>' . _MD_NEWBB_POLL_POLLCONF . "</h4>\n";
540
-        $poll_form->display();
541
-        break;
542
-
543
-    case 'savemore':
544
-        // check security token
545
-        if (!$GLOBALS['xoopsSecurity']->check()) {
546
-            redirect_header(Request::getString('PHP_SELF', '', 'SERVER'), 2, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
547
-        }
548
-
549
-        $option_text   = Request::getString('option_text', '', 'POST');
550
-        $option_string = is_array($option_text) ? implode('', $option_text) : $option_text;
551
-        $option_string = trim($option_string);
552
-        if ('' === $option_string) {
553
-            // irmtfan - issue with javascript:history.go(-1)
554
-            redirect_header(Request::getString('HTTP_REFERER', '', 'SERVER'), 2, _MD_NEWBB_ERROROCCURED . ': ' . _MD_NEWBB_POLL_POLLOPTIONS . ' !');
555
-        }
556
-        $i            = 0;
557
-        $option_color = Request::getArray('option_color', null, 'POST');
558
-        foreach ($option_text as $optxt) {
559
-            $optxt = trim($optxt);
560
-            if ('' !== $optxt) {
561
-                // new xoopspoll module
562
-                if ($pollModuleHandler->getVar('version') >= 140) {
563
-                    $xpOptHandler = Xoopspoll\Helper::getInstance()->getHandler('Option');
564
-                    $optionObject = $xpOptHandler->create();
565
-                    $optionObject->setVar('option_text', $optxt);
566
-                    $optionObject->setVar('poll_id', $poll_id);
567
-                    $optionObject->setVar('option_color', $option_color[$i]);
568
-                    $xpOptHandler->insert($optionObject);
569
-                // old xoopspoll or umfrage or any clone from them
570
-                } else {
571
-                    $classOption  = $classPoll . 'Option';
572
-                    $optionObject = new $classOption();
573
-                    $optionObject->setVar('option_text', $optxt);
574
-                    $optionObject->setVar('poll_id', $poll_id);
575
-                    $optionObject->setVar('option_color', $option_color[$i]);
576
-                    $optionObject->store();
577
-                }
578
-                unset($optionObject);
579
-            }
580
-            ++$i;
581
-        }
582
-        require_once $GLOBALS['xoops']->path('class/template.php');
583
-        xoops_template_clear_module_cache($GLOBALS['xoopsModule']->getVar('mid'));
584
-        xoops_template_clear_module_cache($pollModuleHandler->getVar('mid'));
585
-        redirect_header("polls.php?op=edit&amp;poll_id={$poll_id}&amp;topic_id={$topic_id}", 2, _MD_NEWBB_POLL_DBUPDATED);
586
-        break;
587
-
588
-    case 'delete':
589
-        echo '<h4>' . _MD_NEWBB_POLL_POLLCONF . "</h4>\n";
590
-        xoops_confirm(['op' => 'delete_ok', 'topic_id' => $topic_id, 'poll_id' => $poll_id], 'polls.php', sprintf(_MD_NEWBB_POLL_RUSUREDEL, $pollObject->getVar('question')));
591
-        break;
592
-
593
-    case 'delete_ok':
594
-        // check security token
595
-        if (!$GLOBALS['xoopsSecurity']->check()) {
596
-            redirect_header(Request::getString('PHP_SELF', '', 'SERVER'), 2, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
597
-        }
598
-        //try and delete the poll
599
-        // new xoopspoll module
600
-        if ($pollModuleHandler->getVar('version') >= 140) {
601
-            $status = $xpPollHandler->delete($pollObject);
602
-            if (false !== $status) {
603
-                $xpOptHandler = Xoopspoll\Helper::getInstance()->getHandler('Option');
604
-                $xpLogHandler = Xoopspoll\Helper::getInstance()->getHandler('Log');
605
-                $xpOptHandler->deleteByPollId($poll_id);
606
-                $xpLogHandler->deleteByPollId($poll_id);
607
-            } else {
608
-                $msg = $xpPollHandler->getHtmlErrors();
609
-            }
610
-            // old xoopspoll or umfrage or any clone from them
611
-        } else {
612
-            $status      = $pollObject->delete();
613
-            $classOption = $classPoll . 'Option';
614
-            $classLog    = $classPoll . 'Log';
615
-            if (false !== $status) {
616
-                $classOption::deleteByPollId($poll_id);
617
-                $classLog::deleteByPollId($poll_id);
618
-            } else {
619
-                $msg = $pollObject->getHtmlErrors();
620
-            }
621
-        }
622
-        if (false !== $status) {
623
-            require_once $GLOBALS['xoops']->path('class/template.php');
624
-            xoops_template_clear_module_cache($xoopsModule->getVar('mid'));
625
-            xoops_template_clear_module_cache($pollModuleHandler->getVar('mid'));
626
-            // delete comments for this poll
627
-            xoops_comment_delete($xoopsModule->getVar('mid'), $poll_id);
628
-
629
-            $topicObject->setVar('votes', 0); // not sure why we want to clear votes too... but I left it alone
630
-            $topicObject->setVar('topic_haspoll', 0);
631
-            $topicObject->setVar('poll_id', 0);
632
-            $success = $topicHandler->insert($topicObject);
633
-            if (!$success) {
634
-                xoops_error($topicHandler->getHtmlErrors());
635
-                break;
636
-            }
637
-        } else {
638
-            xoops_error($msg);
639
-            break;
640
-        }
641
-        redirect_header(XOOPS_URL . "/modules/newbb/viewtopic.php?topic_id={$topic_id}", 1, _MD_NEWBB_POLL_DBUPDATED);
642
-        break;
643
-
644
-    case 'restart':
645
-        // new xoopspoll module
646
-        if ($pollModuleHandler->getVar('version') >= 140) {
647
-            $classConstants   = new XoopsModules\Xoopspoll\Constants();
648
-            $default_poll_duration = $classConstants::DEFAULT_POLL_DURATION;
649
-        // old xoopspoll or umfrage or any clone from them
650
-        } else {
651
-            $default_poll_duration = (86400 * 10);
652
-        }
653
-        $poll_form   = new \XoopsThemeForm(_MD_NEWBB_POLL_RESTARTPOLL, 'poll_form', 'polls.php', 'post', true);
654
-        $expire_text = new \XoopsFormText(
655
-            _MD_NEWBB_POLL_EXPIRATION . '<br><small>' . _MD_NEWBB_POLL_FORMAT . '<br>' . sprintf(_MD_NEWBB_POLL_CURRENTTIME, formatTimestamp(time(), 'Y-m-d H:i:s')) . '<br>' . sprintf(
656
-            _MD_NEWBB_POLL_EXPIREDAT,
657
-                                                                                                                                                                                                                     formatTimestamp($pollObject->getVar('end_time'), 'Y-m-d H:i:s')
658
-        ) . '</small>',
659
-                                         'end_time',
660
-            20,
661
-            19,
662
-            formatTimestamp(time() + $default_poll_duration, 'Y-m-d H:i:s')
663
-        );
664
-        $poll_form->addElement($expire_text);
665
-        $poll_form->addElement(new \XoopsFormRadioYN(_MD_NEWBB_POLL_NOTIFY, 'notify', 1));
666
-        $poll_form->addElement(new \XoopsFormRadioYN(_MD_NEWBB_POLL_RESET, 'reset', 0));
667
-        $poll_form->addElement(new \XoopsFormHidden('op', 'restart_ok'));
668
-        $poll_form->addElement(new \XoopsFormHidden('topic_id', $topic_id));
669
-        $poll_form->addElement(new \XoopsFormHidden('poll_id', $poll_id));
670
-        $poll_form->addElement(new \XoopsFormButton('', 'poll_submit', _MD_NEWBB_POLL_RESTART, 'submit'));
671
-
672
-        echo '<h4>' . _MD_NEWBB_POLL_POLLCONF . "</h4>\n";
673
-        $poll_form->display();
674
-        break;
675
-
676
-    case 'restart_ok':
677
-        // check security token
678
-        if (!$GLOBALS['xoopsSecurity']->check()) {
679
-            redirect_header(Request::getString('PHP_SELF', '', 'SERVER'), 2, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
680
-        }
681
-
682
-        // new xoopspoll module
683
-        if ($pollModuleHandler->getVar('version') >= 140) {
684
-            $classConstants   = new XoopsModules\Xoopspoll\Constants();
685
-            $default_poll_duration = $classConstants::DEFAULT_POLL_DURATION;
686
-            $poll_not_mailed       = $classConstants::POLL_NOT_MAILED;
687
-            $poll_mailed           = $classConstants::POLL_MAILED;
688
-        // old xoopspoll or umfrage or any clone from them
689
-        } else {
690
-            $default_poll_duration = (86400 * 10);
691
-            $poll_not_mailed       = Xoopspoll\Constants::POLL_NOT_MAILED;
692
-            $poll_mailed           = Xoopspoll\Constants::POLL_MAILED;
693
-        }
694
-
695
-        $end_time = !Request::getInt('end_time', 0, 'POST');
696
-        if (0 !== $end_time) {
697
-            $timezone = is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getVar('timezone') : null;
698
-            $pollObject->setVar('end_time', userTimeToServerTime(method_exists('XoopsLocal', 'strtotime') ? XoopsLocal::strtotime($end_time) : strtotime($end_time), $timezone));
699
-        } else {
700
-            $pollObject->setVar('end_time', time() + $default_poll_duration);
701
-        }
702
-
703
-        $isNotify = Request::getInt('notify', 0, 'POST');
704
-        if (!empty($isNotify) && ($end_time > time())) {
705
-            // if notify, set mail status to "not mailed"
706
-            $pollObject->setVar('mail_status', $poll_not_mailed);
707
-        } else {
708
-            // if not notify, set mail status to already "mailed"
709
-            $pollObject->setVar('mail_status', $poll_mailed);
710
-        }
711
-
712
-        // new xoopspoll module
713
-        if ($pollModuleHandler->getVar('version') >= 140) {
714
-            if (!$xpPollHandler->insert($pollObject)) {  // update the poll
715
-                xoops_error($pollObject->getHtmlErrors());
716
-                exit();
717
-            }
718
-            if (Request::getInt('reset', 0, 'POST')) { // reset all vote/voter counters
719
-                /** @var Xoopspoll\OptionHandler $xpOptHandler */
720
-                $xpOptHandler = Xoopspoll\Helper::getInstance()->getHandler('Option');
721
-                /** @var Xoopspoll\LogHandler $xpLogHandler */
722
-                $xpLogHandler = Xoopspoll\Helper::getInstance()->getHandler('Log');
723
-                $xpLogHandler->deleteByPollId($poll_id);
724
-                $xpOptHandler->resetCountByPollId($poll_id);
725
-                $xpPollHandler->updateCount($pollObject);
726
-            }
727
-            // old xoopspoll or umfrage or any clone from them
728
-        } else {
729
-            if (!$pollObject->store()) { // update the poll
730
-                xoops_error($pollObject->getHtmlErrors());
731
-                exit();
732
-            }
733
-            if (Request::getInt('reset', 0, 'POST')) { // reset all logs
734
-                $classOption = $classPoll . 'Option';
735
-                $classLog    = $classPoll . 'Log';
736
-                $classLog::deleteByPollId($poll_id);
737
-                $classOption::resetCountByPollId($poll_id);
738
-                $pollObject->updateCount();
739
-            }
740
-        }
741
-        require_once $GLOBALS['xoops']->path('class/template.php');
742
-        xoops_template_clear_module_cache($xoopsModule->getVar('mid'));
743
-        xoops_template_clear_module_cache($pollModuleHandler->getVar('mid'));
744
-        redirect_header(XOOPS_URL . "/modules/newbb/viewtopic.php?topic_id={$topic_id}", 1, _MD_NEWBB_POLL_DBUPDATED);
745
-        break;
746
-
747
-    case 'log':
748
-        // new xoopspoll module
749
-        if ($pollModuleHandler->getVar('version') >= 140) {
750
-            redirect_header($GLOBALS['xoops']->url("modules/{$GLOBALS['xoopsModuleConfig']['poll_module']}/admin/main.php?op=log&amp;poll_id={$poll_id}"), 2, _MD_NEWBB_POLL_VIEWLOG);
751
-        // old xoopspoll or umfrage or any clone from them
752
-        } else {
753
-            redirect_header($GLOBALS['xoops']->url("modules/{$GLOBALS['xoopsModuleConfig']['poll_module']}/admin/index.php?op=log&amp;poll_id={$poll_id}"), 2, _MD_NEWBB_POLL_VIEWLOG);
754
-        }
755
-        break;
264
+            	$option_empty = true;
265
+            	if (!Request::getString('option_text', '', 'POST')) {
266
+                	// irmtfan - issue with javascript:history.go(-1)
267
+                	redirect_header(Request::getString('HTTP_REFERER', '', 'SERVER'), 2, _MD_NEWBB_ERROROCCURED . ': ' . _MD_NEWBB_POLL_POLLOPTIONS . ' !');
268
+            	}
269
+            	$option_text = Request::getArray('option_text', '', 'POST');
270
+            	foreach ($option_text as $optxt) {
271
+                	if ('' !== trim($optxt)) {
272
+                    	$option_empty = false;
273
+                    	break;
274
+                	}
275
+            	}
276
+            	if ($option_empty) {
277
+                	// irmtfan - issue with javascript:history.go(-1)
278
+                	redirect_header(Request::getString('HTTP_REFERER', '', 'SERVER'), 2, _MD_NEWBB_ERROROCCURED . ': ' . _MD_NEWBB_POLL_POLLOPTIONS . ' !');
279
+            	}
280
+            	$pollObject->setVar('question', Request::getString('question', '', 'POST'));
281
+            	$pollObject->setVar('description', Request::getString('description', '', 'POST'));
282
+            	$end_time = Request::getString('end_time', '', 'POST'); // (empty($_POST['end_time'])) ? "" : $_POST['end_time'];
283
+            	if ('' !== $end_time) {
284
+                	$timezone = is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getVar('timezone') : null;
285
+                	$pollObject->setVar('end_time', userTimeToServerTime(method_exists('XoopsLocal', 'strtotime') ? XoopsLocal::strtotime($end_time) : strtotime($end_time), $timezone));
286
+            	} else {
287
+                	// if expiration date is not set, set it to 10 days from now
288
+                	$pollObject->setVar('end_time', time() + (86400 * 10));
289
+            	}
290
+
291
+            	$pollObject->setVar('display', 0);
292
+            	$pollObject->setVar('weight', Request::getInt('weight', 0, 'POST'));
293
+            	$pollObject->setVar('multiple', Request::getInt('multiple', 0, 'POST'));
294
+            	$pollObject->setVar('user_id', Request::getInt('user_id', 0, 'POST'));
295
+            	if (Request::getInt('notify', 0, 'POST') && $end_time > time()) {
296
+                	// if notify, set mail status to "not mailed"
297
+                	$pollObject->setVar('mail_status', Xoopspoll\Constants::POLL_NOT_MAILED);
298
+            	} else {
299
+                	// if not notify, set mail status to already "mailed"
300
+                	$pollObject->setVar('mail_status', Xoopspoll\Constants::POLL_MAILED);
301
+            	}
302
+            	$new_poll_id = $pollObject->store();
303
+            	if (empty($new_poll_id)) {
304
+                	xoops_error($pollObject->getHtmlErrors);
305
+                	break;
306
+            	}
307
+            	$i            = 0;
308
+            	$option_color = Request::getArray('option_color', null, 'POST');
309
+            	$classOption  = $classPoll . 'Option';
310
+            	foreach ($option_text as $optxt) {
311
+                	$optxt = trim($optxt);
312
+                	/** @var Xoopspoll\Option $optionObject */
313
+                	$optionObject = new $classOption();
314
+                	if ('' !== $optxt) {
315
+                    	$optionObject->setVar('option_text', $optxt);
316
+                    	$optionObject->setVar('option_color', $option_color[$i]);
317
+                    	$optionObject->setVar('poll_id', $new_poll_id);
318
+                    	$optionObject->store();
319
+                	}
320
+                	++$i;
321
+            	}
322
+            	// clear the template cache so changes take effect immediately
323
+            	require_once $GLOBALS['xoops']->path('class/template.php');
324
+            	xoops_template_clear_module_cache($GLOBALS['xoopsModule']->getVar('mid'));
325
+            	xoops_template_clear_module_cache($pollModuleHandler->getVar('mid'));
326
+
327
+            	// update topic to indicate it has a poll
328
+            	$topicObject->setVar('topic_haspoll', 1);
329
+            	$topicObject->setVar('poll_id', $new_poll_id);
330
+            	$success = $topicHandler->insert($topicObject);
331
+            	if (!$success) {
332
+                	xoops_error($topicHandler->getHtmlErrors());
333
+            	} else {
334
+                	redirect_header("viewtopic.php?topic_id={$topic_id}", 2, _MD_NEWBB_POLL_DBUPDATED);
335
+            	}
336
+            	break;// op: save
337
+        	}
338
+    	// no break
339
+    	case 'update':
340
+        	// check security token
341
+        	if (!$GLOBALS['xoopsSecurity']->check()) {
342
+            	redirect_header(Request::getString('PHP_SELF', '', 'SERVER'), 2, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
343
+        	}
344
+        	/* make sure there's at least one option */
345
+        	$option_text   = Request::getString('option_text', '', 'POST');
346
+        	$option_string = is_array($option_text) ? implode('', $option_text) : $option_text;
347
+        	$option_string = trim($option_string);
348
+        	if ('' === $option_string) {
349
+            	redirect_header(Request::getString('HTTP_REFERER', '', 'SERVER'), 2, _MD_NEWBB_ERROROCCURED . ': ' . _MD_NEWBB_POLL_POLLOPTIONS . ' !');
350
+        	}
351
+
352
+        	// new xoopspoll module
353
+        	if ($pollModuleHandler->getVar('version') >= 140) {
354
+            	/** @var Xoopspoll\OptionHandler $xpOptHandler */
355
+            	$xpOptHandler = Xoopspoll\Helper::getInstance()->getHandler('Option');
356
+            	/** @var Xoopspoll\LogHandler $xpLogHandler */
357
+            	$xpLogHandler = Xoopspoll\Helper::getInstance()->getHandler('Log');
358
+            	//            $classRequest = ucfirst($GLOBALS['xoopsModuleConfig']["poll_module"]) . "Request";
359
+            	$classConstants   = new XoopsModules\Xoopspoll\Constants();
360
+            	$notify           = Request::getInt('notify', $classConstants::NOTIFICATION_ENABLED, 'POST');
361
+            	$currentTimestamp = time();
362
+            	//$xuEndTimestamp   = method_exists('XoopsLocal', 'strtotime') ? XoopsLocal::strtotime(Request::getString('xu_end_time', null, 'POST'))
363
+            	//                                                             : strtotime(Request::getString('xu_end_time', null, 'POST'));
364
+            	$xuEndTimestamp = strtotime(Request::getString('xu_end_time', null, 'POST'));
365
+            	$endTimestamp   = (!Request::getString('xu_end_time', null, 'POST')) ? ($currentTimestamp + $classConstants::DEFAULT_POLL_DURATION) : userTimeToServerTime($xuEndTimestamp);
366
+            	//$xuStartTimestamp = method_exists('XoopsLocal', 'strtotime') ? XoopsLocal::strtotime(Request::getString('xu_start_time', null, 'POST'))
367
+            	//                                                             : strtotime(Request::getString('xu_start_time', null, 'POST'));
368
+            	$xuStartTimestamp = strtotime(Request::getString('xu_start_time', null, 'POST'));
369
+            	$startTimestamp   = (!Request::getString('xu_start_time', null, 'POST')) ? ($endTimestamp - $classConstants::DEFAULT_POLL_DURATION) : userTimeToServerTime($xuStartTimestamp);
370
+
371
+            	//  don't allow changing start time if there are votes in the log
372
+            	if (($startTimestamp < $pollObject->getVar('start_time'))
373
+                	&& ($xpLogHandler->getTotalVotesByPollId($poll_id) > 0)) {
374
+                	$startTimestamp = $pollObject->getVar('start_time'); //don't change start time
375
+            	}
376
+
377
+            	$poll_vars = [
378
+                	'user_id'     => Request::getInt('user_id', $GLOBALS['xoopsUser']->uid(), 'POST'),
379
+                	'question'    => Request::getString('question', null, 'POST'),
380
+                	'description' => Request::getText('description', null, 'POST'),
381
+                	'mail_status' => ($classConstants::NOTIFICATION_ENABLED == $notify) ? $classConstants::POLL_NOT_MAILED : $classConstants::POLL_MAILED,
382
+                	'mail_voter'  => Request::getInt('mail_voter', $classConstants::NOT_MAIL_POLL_TO_VOTER, 'POST'),
383
+                	'start_time'  => $startTimestamp,
384
+                	'end_time'    => $endTimestamp,
385
+                	'display'     => Request::getInt('display', $classConstants::DO_NOT_DISPLAY_POLL_IN_BLOCK, 'POST'),
386
+                	'visibility'  => Request::getInt('visibility', $classConstants::HIDE_NEVER, 'POST'),
387
+                	'weight'      => Request::getInt('weight', $classConstants::DEFAULT_WEIGHT, 'POST'),
388
+                	'multiple'    => Request::getInt('multiple', $classConstants::NOT_MULTIPLE_SELECT_POLL, 'POST'),
389
+                	'multilimit'  => Request::getInt('multilimit', $classConstants::MULTIPLE_SELECT_LIMITLESS, 'POST'),
390
+                	'anonymous'   => Request::getInt('anonymous', $classConstants::ANONYMOUS_VOTING_DISALLOWED, 'POST')
391
+            	];
392
+            	$pollObject->setVars($poll_vars);
393
+            	$poll_id = $xpPollHandler->insert($pollObject);
394
+            	if (!$poll_id) {
395
+                	$err = $pollObject->getHtmlErrors();
396
+                	exit($err);
397
+            	}
398
+
399
+            	// now get the options
400
+            	$optionIdArray    = Request::getArray('option_id', [], 'POST');
401
+            	$optionIdArray    = array_map('intval', $optionIdArray);
402
+            	$optionTextArray  = Request::getArray('option_text', [], 'POST');
403
+            	$optionColorArray = Request::getArray('option_color', [], 'POST');
404
+
405
+            	foreach ($optionIdArray as $key => $oId) {
406
+                	if (!empty($oId) && ($optionObject = $xpOptHandler->get($oId))) {
407
+                    	// existing option object so need to update it
408
+                    	$optionTextArray[$key] = trim($optionTextArray[$key]);
409
+                    	if ('' === $optionTextArray[$key]) {
410
+                        	// want to delete this option
411
+                        	if (false !== $xpOptHandler->delete($optionObject)) {
412
+                            	// now remove it from the log
413
+                            	$xpLogHandler->deleteByOptionId($optionObject->getVar('option_id'));
414
+                            	//update vote count in poll
415
+                            	$xpPollHandler->updateCount($pollObject);
416
+                        	} else {
417
+                            	xoops_error($xpLogHandler->getHtmlErrors());
418
+                            	break;
419
+                        	}
420
+                    	} else {
421
+                        	$optionObject->setVar('option_text', $optionTextArray[$key]);
422
+                        	$optionObject->setVar('option_color', $optionColorArray[$key]);
423
+                        	$optionObject->setVar('poll_id', $poll_id);
424
+                        	$xpOptHandler->insert($optionObject);
425
+                    	}
426
+                	} else {
427
+                    	// new option object
428
+                    	$optionObject          = $xpOptHandler->create();
429
+                    	$optionTextArray[$key] = trim($optionTextArray[$key]);
430
+                    	if ('' !== $optionTextArray[$key]) { // ignore if text is empty
431
+                        	$optionObject->setVar('option_text', $optionTextArray[$key]);
432
+                        	$optionObject->setVar('option_color', $optionColorArray[$key]);
433
+                        	$optionObject->setVar('poll_id', $poll_id);
434
+                        	$xpOptHandler->insert($optionObject);
435
+                    	}
436
+                    	unset($optionObject);
437
+                	}
438
+            	}
439
+            	// old xoopspoll or umfrage or any clone from them
440
+        	} else {
441
+            	$pollObject->setVar('question', Request::getString('question', '', 'POST'));
442
+            	$pollObject->setVar('description', Request::getString('description', '', 'POST'));
443
+
444
+            	$end_time = Request::getString('end_time', '', 'POST');
445
+            	if ('' !== $end_time) {
446
+                	$timezone = is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getVar('timezone') : null;
447
+                	$pollObject->setVar('end_time', userTimeToServerTime(method_exists('XoopsLocal', 'strtotime') ? XoopsLocal::strtotime($end_time) : strtotime($end_time), $timezone));
448
+            	}
449
+            	$pollObject->setVar('display', 0);
450
+            	$pollObject->setVar('weight', Request::getInt('weight', 0, 'POST'));
451
+            	$pollObject->setVar('multiple', Request::getInt('multiple', 0, 'POST'));
452
+            	$pollObject->setVar('user_id', Request::getInt('user_id', 0, 'POST'));
453
+            	if (Request::getInt('notify', 0, 'POST') && $end_time > time()) {
454
+                	// if notify, set mail status to "not mailed"
455
+                	$pollObject->setVar('mail_status', $classConstants::POLL_NOT_MAILED);
456
+            	} else {
457
+                	// if not notify, set mail status to already "mailed"
458
+                	$pollObject->setVar('mail_status', $classConstants::POLL_MAILED);
459
+            	}
460
+
461
+            	if (!$pollObject->store()) {
462
+                	xoops_error($pollObject->getHtmlErrors);
463
+                	break;
464
+            	}
465
+            	$i            = 0;
466
+            	$option_id    = Request::getArray('option_id', null, 'POST');
467
+            	$option_color = Request::getArray('option_color', null, 'POST');
468
+            	$classOption  = $classPoll . 'Option';
469
+            	$classLog     = $classPoll . 'Log';
470
+            	foreach ($option_id as $opid) {
471
+                	$optionObject    = new $classOption($opid);
472
+                	$option_text[$i] = trim($option_text[$i]);
473
+                	if ('' !== $option_text[$i]) {
474
+                    	$optionObject->setVar('option_text', $option_text[$i]);
475
+                    	$optionObject->setVar('option_color', $option_color[$i]);
476
+                    	$optionObject->store();
477
+                	} else {
478
+                    	if (false !== $optionObject->delete()) {
479
+                        	$classLog::deleteByOptionId($option->getVar('option_id'));
480
+                    	}
481
+                	}
482
+                	++$i;
483
+            	}
484
+            	$pollObject->updateCount();
485
+        	}
486
+        	// clear the template cache so changes take effect immediately
487
+        	require_once $GLOBALS['xoops']->path('class/template.php');
488
+        	xoops_template_clear_module_cache($GLOBALS['xoopsModule']->getVar('mid'));
489
+        	xoops_template_clear_module_cache($pollModuleHandler->getVar('mid'));
490
+
491
+        	// update topic to indicate it has a poll
492
+        	$topicObject->setVar('topic_haspoll', 1);
493
+        	$topicObject->setVar('poll_id', $pollObject->getVar('poll_id'));
494
+        	$success = $topicHandler->insert($topicObject);
495
+        	if (!$success) {
496
+            	xoops_error($topicHandler->getHtmlErrors());
497
+        	} else {
498
+            	redirect_header("viewtopic.php?topic_id={$topic_id}", 2, _MD_NEWBB_POLL_DBUPDATED);
499
+        	}
500
+        	break;// op: save | update
501
+
502
+    	case 'addmore':
503
+        	$question = $pollObject->getVar('question');
504
+        	unset($pollObject);
505
+        	$poll_form = new \XoopsThemeForm(_MD_NEWBB_POLL_ADDMORE, 'poll_form', 'polls.php', 'post', true);
506
+        	$poll_form->addElement(new \XoopsFormLabel(_MD_NEWBB_POLL_POLLQUESTION, $question));
507
+        	// new xoopspoll module
508
+        	if ($pollModuleHandler->getVar('version') >= 140) {
509
+            	$xpOptHandler = Xoopspoll\Helper::getInstance()->getHandler('Option');
510
+            	$option_tray  = $xpOptHandler->renderOptionFormTray($poll_id);
511
+        	// old xoopspoll or umfrage or any clone from them
512
+        	} else {
513
+            	$option_tray    = new \XoopsFormElementTray(_MD_NEWBB_POLL_POLLOPTIONS, '');
514
+            	$barcolor_array = \XoopsLists::getImgListAsArray($GLOBALS['xoops']->path('modules/' . $GLOBALS['xoopsModuleConfig']['poll_module'] . '/assets/images/colorbars/'));
515
+            	for ($i = 0; $i < 10; ++$i) {
516
+                	$current_bar = ('blank.gif' !== current($barcolor_array)) ? current($barcolor_array) : next($barcolor_array);
517
+                	$option_text = new \XoopsFormText('', 'option_text[]', 50, 255);
518
+                	$option_tray->addElement($option_text);
519
+                	$color_select = new \XoopsFormSelect('', "option_color[{$i}]", $current_bar);
520
+                	$color_select->addOptionArray($barcolor_array);
521
+                	$color_select->setExtra("onchange='showImgSelected(\"option_color_image[{$i}]\", \"option_color[{$i}]\", \"modules/{$GLOBALS['xoopsModuleConfig']['poll_module']}/assets/images/colorbars\", \"\", \"" . XOOPS_URL . "\")'");
522
+                	$color_label = new \XoopsFormLabel('', "<img src='"
523
+                                                      	. $GLOBALS['xoops']->url("modules/{$GLOBALS['xoopsModuleConfig']['poll_module']}/assets/images/colorbars/{$current_bar}")
524
+                                                      	. "' name='option_color_image[{$i}]' id='option_color_image[{$i}]' class='alignbottom' width='30' height='15' alt='' /><br>");
525
+                	$option_tray->addElement($color_select);
526
+                	$option_tray->addElement($color_label);
527
+                	unset($color_select, $color_label, $option_text);
528
+                	if (!next($barcolor_array)) {
529
+                    	reset($barcolor_array);
530
+                	}
531
+            	}
532
+        	}
533
+        	$poll_form->addElement($option_tray);
534
+        	$poll_form->addElement(new \XoopsFormButtonTray('poll_submit', _SUBMIT, 'submit'));
535
+        	$poll_form->addElement(new \XoopsFormHidden('op', 'savemore'));
536
+        	$poll_form->addElement(new \XoopsFormHidden('topic_id', $topic_id));
537
+        	$poll_form->addElement(new \XoopsFormHidden('poll_id', $poll_id));
538
+
539
+        	echo '<h4>' . _MD_NEWBB_POLL_POLLCONF . "</h4>\n";
540
+        	$poll_form->display();
541
+        	break;
542
+
543
+    	case 'savemore':
544
+        	// check security token
545
+        	if (!$GLOBALS['xoopsSecurity']->check()) {
546
+            	redirect_header(Request::getString('PHP_SELF', '', 'SERVER'), 2, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
547
+        	}
548
+
549
+        	$option_text   = Request::getString('option_text', '', 'POST');
550
+        	$option_string = is_array($option_text) ? implode('', $option_text) : $option_text;
551
+        	$option_string = trim($option_string);
552
+        	if ('' === $option_string) {
553
+            	// irmtfan - issue with javascript:history.go(-1)
554
+            	redirect_header(Request::getString('HTTP_REFERER', '', 'SERVER'), 2, _MD_NEWBB_ERROROCCURED . ': ' . _MD_NEWBB_POLL_POLLOPTIONS . ' !');
555
+        	}
556
+        	$i            = 0;
557
+        	$option_color = Request::getArray('option_color', null, 'POST');
558
+        	foreach ($option_text as $optxt) {
559
+            	$optxt = trim($optxt);
560
+            	if ('' !== $optxt) {
561
+                	// new xoopspoll module
562
+                	if ($pollModuleHandler->getVar('version') >= 140) {
563
+                    	$xpOptHandler = Xoopspoll\Helper::getInstance()->getHandler('Option');
564
+                    	$optionObject = $xpOptHandler->create();
565
+                    	$optionObject->setVar('option_text', $optxt);
566
+                    	$optionObject->setVar('poll_id', $poll_id);
567
+                    	$optionObject->setVar('option_color', $option_color[$i]);
568
+                    	$xpOptHandler->insert($optionObject);
569
+                	// old xoopspoll or umfrage or any clone from them
570
+                	} else {
571
+                    	$classOption  = $classPoll . 'Option';
572
+                    	$optionObject = new $classOption();
573
+                    	$optionObject->setVar('option_text', $optxt);
574
+                    	$optionObject->setVar('poll_id', $poll_id);
575
+                    	$optionObject->setVar('option_color', $option_color[$i]);
576
+                    	$optionObject->store();
577
+                	}
578
+                	unset($optionObject);
579
+            	}
580
+            	++$i;
581
+        	}
582
+        	require_once $GLOBALS['xoops']->path('class/template.php');
583
+        	xoops_template_clear_module_cache($GLOBALS['xoopsModule']->getVar('mid'));
584
+        	xoops_template_clear_module_cache($pollModuleHandler->getVar('mid'));
585
+        	redirect_header("polls.php?op=edit&amp;poll_id={$poll_id}&amp;topic_id={$topic_id}", 2, _MD_NEWBB_POLL_DBUPDATED);
586
+        	break;
587
+
588
+    	case 'delete':
589
+        	echo '<h4>' . _MD_NEWBB_POLL_POLLCONF . "</h4>\n";
590
+        	xoops_confirm(['op' => 'delete_ok', 'topic_id' => $topic_id, 'poll_id' => $poll_id], 'polls.php', sprintf(_MD_NEWBB_POLL_RUSUREDEL, $pollObject->getVar('question')));
591
+        	break;
592
+
593
+    	case 'delete_ok':
594
+        	// check security token
595
+        	if (!$GLOBALS['xoopsSecurity']->check()) {
596
+            	redirect_header(Request::getString('PHP_SELF', '', 'SERVER'), 2, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
597
+        	}
598
+        	//try and delete the poll
599
+        	// new xoopspoll module
600
+        	if ($pollModuleHandler->getVar('version') >= 140) {
601
+            	$status = $xpPollHandler->delete($pollObject);
602
+            	if (false !== $status) {
603
+                	$xpOptHandler = Xoopspoll\Helper::getInstance()->getHandler('Option');
604
+                	$xpLogHandler = Xoopspoll\Helper::getInstance()->getHandler('Log');
605
+                	$xpOptHandler->deleteByPollId($poll_id);
606
+                	$xpLogHandler->deleteByPollId($poll_id);
607
+            	} else {
608
+                	$msg = $xpPollHandler->getHtmlErrors();
609
+            	}
610
+            	// old xoopspoll or umfrage or any clone from them
611
+        	} else {
612
+            	$status      = $pollObject->delete();
613
+            	$classOption = $classPoll . 'Option';
614
+            	$classLog    = $classPoll . 'Log';
615
+            	if (false !== $status) {
616
+                	$classOption::deleteByPollId($poll_id);
617
+                	$classLog::deleteByPollId($poll_id);
618
+            	} else {
619
+                	$msg = $pollObject->getHtmlErrors();
620
+            	}
621
+        	}
622
+        	if (false !== $status) {
623
+            	require_once $GLOBALS['xoops']->path('class/template.php');
624
+            	xoops_template_clear_module_cache($xoopsModule->getVar('mid'));
625
+            	xoops_template_clear_module_cache($pollModuleHandler->getVar('mid'));
626
+            	// delete comments for this poll
627
+            	xoops_comment_delete($xoopsModule->getVar('mid'), $poll_id);
628
+
629
+            	$topicObject->setVar('votes', 0); // not sure why we want to clear votes too... but I left it alone
630
+            	$topicObject->setVar('topic_haspoll', 0);
631
+            	$topicObject->setVar('poll_id', 0);
632
+            	$success = $topicHandler->insert($topicObject);
633
+            	if (!$success) {
634
+                	xoops_error($topicHandler->getHtmlErrors());
635
+                	break;
636
+            	}
637
+        	} else {
638
+            	xoops_error($msg);
639
+            	break;
640
+        	}
641
+        	redirect_header(XOOPS_URL . "/modules/newbb/viewtopic.php?topic_id={$topic_id}", 1, _MD_NEWBB_POLL_DBUPDATED);
642
+        	break;
643
+
644
+    	case 'restart':
645
+        	// new xoopspoll module
646
+        	if ($pollModuleHandler->getVar('version') >= 140) {
647
+            	$classConstants   = new XoopsModules\Xoopspoll\Constants();
648
+            	$default_poll_duration = $classConstants::DEFAULT_POLL_DURATION;
649
+        	// old xoopspoll or umfrage or any clone from them
650
+        	} else {
651
+            	$default_poll_duration = (86400 * 10);
652
+        	}
653
+        	$poll_form   = new \XoopsThemeForm(_MD_NEWBB_POLL_RESTARTPOLL, 'poll_form', 'polls.php', 'post', true);
654
+        	$expire_text = new \XoopsFormText(
655
+            	_MD_NEWBB_POLL_EXPIRATION . '<br><small>' . _MD_NEWBB_POLL_FORMAT . '<br>' . sprintf(_MD_NEWBB_POLL_CURRENTTIME, formatTimestamp(time(), 'Y-m-d H:i:s')) . '<br>' . sprintf(
656
+            	_MD_NEWBB_POLL_EXPIREDAT,
657
+                                                                                                                                                                                                                     	formatTimestamp($pollObject->getVar('end_time'), 'Y-m-d H:i:s')
658
+        	) . '</small>',
659
+                                         	'end_time',
660
+            	20,
661
+            	19,
662
+            	formatTimestamp(time() + $default_poll_duration, 'Y-m-d H:i:s')
663
+        	);
664
+        	$poll_form->addElement($expire_text);
665
+        	$poll_form->addElement(new \XoopsFormRadioYN(_MD_NEWBB_POLL_NOTIFY, 'notify', 1));
666
+        	$poll_form->addElement(new \XoopsFormRadioYN(_MD_NEWBB_POLL_RESET, 'reset', 0));
667
+        	$poll_form->addElement(new \XoopsFormHidden('op', 'restart_ok'));
668
+        	$poll_form->addElement(new \XoopsFormHidden('topic_id', $topic_id));
669
+        	$poll_form->addElement(new \XoopsFormHidden('poll_id', $poll_id));
670
+        	$poll_form->addElement(new \XoopsFormButton('', 'poll_submit', _MD_NEWBB_POLL_RESTART, 'submit'));
671
+
672
+        	echo '<h4>' . _MD_NEWBB_POLL_POLLCONF . "</h4>\n";
673
+        	$poll_form->display();
674
+        	break;
675
+
676
+    	case 'restart_ok':
677
+        	// check security token
678
+        	if (!$GLOBALS['xoopsSecurity']->check()) {
679
+            	redirect_header(Request::getString('PHP_SELF', '', 'SERVER'), 2, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
680
+        	}
681
+
682
+        	// new xoopspoll module
683
+        	if ($pollModuleHandler->getVar('version') >= 140) {
684
+            	$classConstants   = new XoopsModules\Xoopspoll\Constants();
685
+            	$default_poll_duration = $classConstants::DEFAULT_POLL_DURATION;
686
+            	$poll_not_mailed       = $classConstants::POLL_NOT_MAILED;
687
+            	$poll_mailed           = $classConstants::POLL_MAILED;
688
+        	// old xoopspoll or umfrage or any clone from them
689
+        	} else {
690
+            	$default_poll_duration = (86400 * 10);
691
+            	$poll_not_mailed       = Xoopspoll\Constants::POLL_NOT_MAILED;
692
+            	$poll_mailed           = Xoopspoll\Constants::POLL_MAILED;
693
+        	}
694
+
695
+        	$end_time = !Request::getInt('end_time', 0, 'POST');
696
+        	if (0 !== $end_time) {
697
+            	$timezone = is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getVar('timezone') : null;
698
+            	$pollObject->setVar('end_time', userTimeToServerTime(method_exists('XoopsLocal', 'strtotime') ? XoopsLocal::strtotime($end_time) : strtotime($end_time), $timezone));
699
+        	} else {
700
+            	$pollObject->setVar('end_time', time() + $default_poll_duration);
701
+        	}
702
+
703
+        	$isNotify = Request::getInt('notify', 0, 'POST');
704
+        	if (!empty($isNotify) && ($end_time > time())) {
705
+            	// if notify, set mail status to "not mailed"
706
+            	$pollObject->setVar('mail_status', $poll_not_mailed);
707
+        	} else {
708
+            	// if not notify, set mail status to already "mailed"
709
+            	$pollObject->setVar('mail_status', $poll_mailed);
710
+        	}
711
+
712
+        	// new xoopspoll module
713
+        	if ($pollModuleHandler->getVar('version') >= 140) {
714
+            	if (!$xpPollHandler->insert($pollObject)) {  // update the poll
715
+                	xoops_error($pollObject->getHtmlErrors());
716
+                	exit();
717
+            	}
718
+            	if (Request::getInt('reset', 0, 'POST')) { // reset all vote/voter counters
719
+                	/** @var Xoopspoll\OptionHandler $xpOptHandler */
720
+                	$xpOptHandler = Xoopspoll\Helper::getInstance()->getHandler('Option');
721
+                	/** @var Xoopspoll\LogHandler $xpLogHandler */
722
+                	$xpLogHandler = Xoopspoll\Helper::getInstance()->getHandler('Log');
723
+                	$xpLogHandler->deleteByPollId($poll_id);
724
+                	$xpOptHandler->resetCountByPollId($poll_id);
725
+                	$xpPollHandler->updateCount($pollObject);
726
+            	}
727
+            	// old xoopspoll or umfrage or any clone from them
728
+        	} else {
729
+            	if (!$pollObject->store()) { // update the poll
730
+                	xoops_error($pollObject->getHtmlErrors());
731
+                	exit();
732
+            	}
733
+            	if (Request::getInt('reset', 0, 'POST')) { // reset all logs
734
+                	$classOption = $classPoll . 'Option';
735
+                	$classLog    = $classPoll . 'Log';
736
+                	$classLog::deleteByPollId($poll_id);
737
+                	$classOption::resetCountByPollId($poll_id);
738
+                	$pollObject->updateCount();
739
+            	}
740
+        	}
741
+        	require_once $GLOBALS['xoops']->path('class/template.php');
742
+        	xoops_template_clear_module_cache($xoopsModule->getVar('mid'));
743
+        	xoops_template_clear_module_cache($pollModuleHandler->getVar('mid'));
744
+        	redirect_header(XOOPS_URL . "/modules/newbb/viewtopic.php?topic_id={$topic_id}", 1, _MD_NEWBB_POLL_DBUPDATED);
745
+        	break;
746
+
747
+    	case 'log':
748
+        	// new xoopspoll module
749
+        	if ($pollModuleHandler->getVar('version') >= 140) {
750
+            	redirect_header($GLOBALS['xoops']->url("modules/{$GLOBALS['xoopsModuleConfig']['poll_module']}/admin/main.php?op=log&amp;poll_id={$poll_id}"), 2, _MD_NEWBB_POLL_VIEWLOG);
751
+        	// old xoopspoll or umfrage or any clone from them
752
+        	} else {
753
+            	redirect_header($GLOBALS['xoops']->url("modules/{$GLOBALS['xoopsModuleConfig']['poll_module']}/admin/index.php?op=log&amp;poll_id={$poll_id}"), 2, _MD_NEWBB_POLL_VIEWLOG);
754
+        	}
755
+        	break;
756 756
 } // switch
757 757
 
758 758
 // irmtfan move to footer.php
Please login to merge, or discard this patch.
admin/admin_cat_manager.php 1 patch
Switch Indentation   +93 added lines, -93 removed lines patch added patch discarded remove patch
@@ -115,99 +115,99 @@
 block discarded – undo
115 115
 }
116 116
 
117 117
 switch ($op) {
118
-    case 'mod':
119
-        $categoryObject = ($cat_id > 0) ? $categoryHandler->get($cat_id) : $categoryHandler->create();
120
-        //        if (!$newXoopsModuleGui) {
121
-        //            //loadModuleAdminMenu(1, ( $cat_id > 0) ? _AM_NEWBB_EDITCATEGORY . $categoryObject->getVar('cat_title') : _AM_NEWBB_CREATENEWCATEGORY);
122
-        //            echo "<legend style='font-weight: bold; color: #900;'>" . _AM_NEWBB_EDITCATEGORY . '</legend>';
123
-        //        } else {
124
-        $adminObject->displayNavigation(basename(__FILE__));
125
-        //        }
126
-        echo '<br>';
127
-        editCategory($categoryObject);
128
-        break;
129
-
130
-    case 'del':
131
-        if (!Request::getBool('confirm', '', 'POST')) {
132
-            xoops_confirm(['op' => 'del', 'cat_id' => Request::getInt('cat_id', 0, 'GET'), 'confirm' => 1], 'admin_cat_manager.php', _AM_NEWBB_WAYSYWTDTTAL);
133
-            break;
134
-        } else {
135
-            $categoryObject = $categoryHandler->create(false);
136
-            $categoryObject->setVar('cat_id', Request::getInt('cat_id', 0, 'POST'));
137
-            $categoryHandler->delete($categoryObject);
138
-
139
-            redirect_header('admin_cat_manager.php', 2, _AM_NEWBB_CATEGORYDELETED);
140
-        }
141
-        break;
142
-
143
-    case 'save':
144
-        $cacheHelper = new \Xmf\Module\Helper\Cache('newbb');
145
-        $cacheHelper->delete('permission_category');
146
-        if ($cat_id) {
147
-            $categoryObject = $categoryHandler->get($cat_id);
148
-            $message        = _AM_NEWBB_CATEGORYUPDATED;
149
-        } else {
150
-            $categoryObject = $categoryHandler->create();
151
-            $message        = _AM_NEWBB_CATEGORYCREATED;
152
-        }
153
-
154
-        $categoryObject->setVar('cat_title', Request::getString('title', '', 'POST'));
155
-        $categoryObject->setVar('cat_image', Request::getString('cat_image', '', 'POST'));
156
-        $categoryObject->setVar('cat_order', Request::getInt('cat_order', 0, 'POST'));
157
-        $categoryObject->setVar('cat_description', Request::getText('cat_description', '', 'POST'));
158
-        $categoryObject->setVar('cat_url', Request::getString('cat_url', '', 'POST'));
159
-
160
-        $cat_isNew = $categoryObject->isNew();
161
-        if (!$categoryHandler->insert($categoryObject)) {
162
-            $message = _AM_NEWBB_DATABASEERROR;
163
-        }
164
-        if (($cat_id = $categoryObject->getVar('cat_id')) && $cat_isNew) {
165
-            $categoryHandler->applyPermissionTemplate($categoryObject);
166
-        }
167
-        redirect_header('admin_cat_manager.php', 2, $message);
168
-        break;
169
-
170
-    default:
171
-        if (!$categories = $categoryHandler->getByPermission('all')) {
172
-            $adminObject->addItemButton(_AM_NEWBB_CREATENEWCATEGORY, 'admin_cat_manager.php?op=mod', $icon = 'add');
173
-            $adminObject->displayButton('left');
174
-
175
-            echo '<br>';
176
-            newCategory();
177
-            break;
178
-        }
179
-        $adminObject->displayNavigation(basename(__FILE__));
180
-        $adminObject->addItemButton(_AM_NEWBB_CREATENEWCATEGORY, 'admin_cat_manager.php?op=mod', $icon = 'add');
181
-        $adminObject->displayButton('left');
182
-
183
-        echo "<table width='100%' border='0' cellspacing='1' class='outer'>" . "<tr><td class='odd'>";
184
-        echo "<table border='0' cellpadding='4' cellspacing='1' width='100%' class='outer'>";
185
-        echo "<tr align='center'>";
186
-        echo "<th align='left' class='bg3'>" . _AM_NEWBB_CATEGORY1 . '</th>';
187
-        echo "<th class='bg3' width='10%'>" . _AM_NEWBB_EDIT . '</th>';
188
-        echo "<th class='bg3' width='10%'>" . _AM_NEWBB_DELETE . '</th>';
189
-        echo '</tr>';
190
-
191
-        foreach ($categories as $key => $onecat) {
192
-            $cat_edit_link  = '<a href="admin_cat_manager.php?op=mod&cat_id=' . $onecat->getVar('cat_id') . '">' . newbbDisplayImage('admin_edit', _EDIT) . '</a>';
193
-            $cat_del_link   = '<a href="admin_cat_manager.php?op=del&cat_id=' . $onecat->getVar('cat_id') . '">' . newbbDisplayImage('admin_delete', _DELETE) . '</a>';
194
-            $cat_title_link = '<a href="' . XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/index.php?cat=' . $onecat->getVar('cat_id') . '">' . $onecat->getVar('cat_title') . '</a>';
195
-
196
-            echo "<tr class='odd' align='left'>";
197
-            echo '<td>' . $cat_title_link . '</td>';
198
-            echo "<td align='center'>" . $cat_edit_link . '</td>';
199
-            echo "<td align='center'>" . $cat_del_link . '</td>';
200
-            echo '</tr>';
201
-        }
202
-        echo '</table>';
203
-        echo '</td></tr></table>';
204
-        echo '<fieldset>';
205
-        echo '<legend>&nbsp;' . _MI_NEWBB_ADMENU_CATEGORY . '&nbsp;</legend>';
206
-        echo _AM_NEWBB_HELP_CATEGORY_TAB;
207
-        echo '<br>' . newbbDisplayImage('admin_edit', _EDIT) . '&nbsp;-&nbsp;' . _EDIT;
208
-        echo '<br>' . newbbDisplayImage('admin_delete', _DELETE) . '&nbsp;-&nbsp;' . _DELETE;
209
-        echo '</fieldset>';
210
-        break;
118
+    	case 'mod':
119
+        	$categoryObject = ($cat_id > 0) ? $categoryHandler->get($cat_id) : $categoryHandler->create();
120
+        	//        if (!$newXoopsModuleGui) {
121
+        	//            //loadModuleAdminMenu(1, ( $cat_id > 0) ? _AM_NEWBB_EDITCATEGORY . $categoryObject->getVar('cat_title') : _AM_NEWBB_CREATENEWCATEGORY);
122
+        	//            echo "<legend style='font-weight: bold; color: #900;'>" . _AM_NEWBB_EDITCATEGORY . '</legend>';
123
+        	//        } else {
124
+        	$adminObject->displayNavigation(basename(__FILE__));
125
+        	//        }
126
+        	echo '<br>';
127
+        	editCategory($categoryObject);
128
+        	break;
129
+
130
+    	case 'del':
131
+        	if (!Request::getBool('confirm', '', 'POST')) {
132
+            	xoops_confirm(['op' => 'del', 'cat_id' => Request::getInt('cat_id', 0, 'GET'), 'confirm' => 1], 'admin_cat_manager.php', _AM_NEWBB_WAYSYWTDTTAL);
133
+            	break;
134
+        	} else {
135
+            	$categoryObject = $categoryHandler->create(false);
136
+            	$categoryObject->setVar('cat_id', Request::getInt('cat_id', 0, 'POST'));
137
+            	$categoryHandler->delete($categoryObject);
138
+
139
+            	redirect_header('admin_cat_manager.php', 2, _AM_NEWBB_CATEGORYDELETED);
140
+        	}
141
+        	break;
142
+
143
+    	case 'save':
144
+        	$cacheHelper = new \Xmf\Module\Helper\Cache('newbb');
145
+        	$cacheHelper->delete('permission_category');
146
+        	if ($cat_id) {
147
+            	$categoryObject = $categoryHandler->get($cat_id);
148
+            	$message        = _AM_NEWBB_CATEGORYUPDATED;
149
+        	} else {
150
+            	$categoryObject = $categoryHandler->create();
151
+            	$message        = _AM_NEWBB_CATEGORYCREATED;
152
+        	}
153
+
154
+        	$categoryObject->setVar('cat_title', Request::getString('title', '', 'POST'));
155
+        	$categoryObject->setVar('cat_image', Request::getString('cat_image', '', 'POST'));
156
+        	$categoryObject->setVar('cat_order', Request::getInt('cat_order', 0, 'POST'));
157
+        	$categoryObject->setVar('cat_description', Request::getText('cat_description', '', 'POST'));
158
+        	$categoryObject->setVar('cat_url', Request::getString('cat_url', '', 'POST'));
159
+
160
+        	$cat_isNew = $categoryObject->isNew();
161
+        	if (!$categoryHandler->insert($categoryObject)) {
162
+            	$message = _AM_NEWBB_DATABASEERROR;
163
+        	}
164
+        	if (($cat_id = $categoryObject->getVar('cat_id')) && $cat_isNew) {
165
+            	$categoryHandler->applyPermissionTemplate($categoryObject);
166
+        	}
167
+        	redirect_header('admin_cat_manager.php', 2, $message);
168
+        	break;
169
+
170
+    	default:
171
+        	if (!$categories = $categoryHandler->getByPermission('all')) {
172
+            	$adminObject->addItemButton(_AM_NEWBB_CREATENEWCATEGORY, 'admin_cat_manager.php?op=mod', $icon = 'add');
173
+            	$adminObject->displayButton('left');
174
+
175
+            	echo '<br>';
176
+            	newCategory();
177
+            	break;
178
+        	}
179
+        	$adminObject->displayNavigation(basename(__FILE__));
180
+        	$adminObject->addItemButton(_AM_NEWBB_CREATENEWCATEGORY, 'admin_cat_manager.php?op=mod', $icon = 'add');
181
+        	$adminObject->displayButton('left');
182
+
183
+        	echo "<table width='100%' border='0' cellspacing='1' class='outer'>" . "<tr><td class='odd'>";
184
+        	echo "<table border='0' cellpadding='4' cellspacing='1' width='100%' class='outer'>";
185
+        	echo "<tr align='center'>";
186
+        	echo "<th align='left' class='bg3'>" . _AM_NEWBB_CATEGORY1 . '</th>';
187
+        	echo "<th class='bg3' width='10%'>" . _AM_NEWBB_EDIT . '</th>';
188
+        	echo "<th class='bg3' width='10%'>" . _AM_NEWBB_DELETE . '</th>';
189
+        	echo '</tr>';
190
+
191
+        	foreach ($categories as $key => $onecat) {
192
+            	$cat_edit_link  = '<a href="admin_cat_manager.php?op=mod&cat_id=' . $onecat->getVar('cat_id') . '">' . newbbDisplayImage('admin_edit', _EDIT) . '</a>';
193
+            	$cat_del_link   = '<a href="admin_cat_manager.php?op=del&cat_id=' . $onecat->getVar('cat_id') . '">' . newbbDisplayImage('admin_delete', _DELETE) . '</a>';
194
+            	$cat_title_link = '<a href="' . XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/index.php?cat=' . $onecat->getVar('cat_id') . '">' . $onecat->getVar('cat_title') . '</a>';
195
+
196
+            	echo "<tr class='odd' align='left'>";
197
+            	echo '<td>' . $cat_title_link . '</td>';
198
+            	echo "<td align='center'>" . $cat_edit_link . '</td>';
199
+            	echo "<td align='center'>" . $cat_del_link . '</td>';
200
+            	echo '</tr>';
201
+        	}
202
+        	echo '</table>';
203
+        	echo '</td></tr></table>';
204
+        	echo '<fieldset>';
205
+        	echo '<legend>&nbsp;' . _MI_NEWBB_ADMENU_CATEGORY . '&nbsp;</legend>';
206
+        	echo _AM_NEWBB_HELP_CATEGORY_TAB;
207
+        	echo '<br>' . newbbDisplayImage('admin_edit', _EDIT) . '&nbsp;-&nbsp;' . _EDIT;
208
+        	echo '<br>' . newbbDisplayImage('admin_delete', _DELETE) . '&nbsp;-&nbsp;' . _DELETE;
209
+        	echo '</fieldset>';
210
+        	break;
211 211
 }
212 212
 
213 213
 $cacheHelper = Newbb\Utility::cleanCache();
Please login to merge, or discard this patch.