XoopsModules25x /
xhelp
This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include, or for example
via PHP's auto-loading mechanism.
| 1 | <?php declare(strict_types=1); |
||||||||
| 2 | |||||||||
| 3 | namespace XoopsModules\Xhelp; |
||||||||
| 4 | |||||||||
| 5 | /* |
||||||||
| 6 | * You may not change or alter any portion of this comment or credits |
||||||||
| 7 | * of supporting developers from this source code or any supporting source code |
||||||||
| 8 | * which is considered copyrighted (c) material of the original comment or credit authors. |
||||||||
| 9 | * |
||||||||
| 10 | * This program is distributed in the hope that it will be useful, |
||||||||
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||||
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
||||||||
| 13 | */ |
||||||||
| 14 | |||||||||
| 15 | /** |
||||||||
| 16 | * @copyright {@link https://xoops.org/ XOOPS Project} |
||||||||
| 17 | * @license {@link https://www.gnu.org/licenses/gpl-2.0.html GNU GPL 2 or later} |
||||||||
| 18 | * @author Brian Wahoff <[email protected]> |
||||||||
| 19 | * @author XOOPS Development Team |
||||||||
| 20 | */ |
||||||||
| 21 | |||||||||
| 22 | if (!\defined('XHELP_CONSTANTS_INCLUDED')) { |
||||||||
| 23 | exit(); |
||||||||
| 24 | } |
||||||||
| 25 | |||||||||
| 26 | //require_once XHELP_BASE_PATH . '/functions.php'; |
||||||||
| 27 | // require_once XHELP_CLASS_PATH . '/Service.php'; |
||||||||
| 28 | |||||||||
| 29 | /** |
||||||||
| 30 | * NotificationService class |
||||||||
| 31 | * |
||||||||
| 32 | * Part of the Messaging Subsystem. Uses the xoopsNotificationHandler class to send emails to users |
||||||||
| 33 | * |
||||||||
| 34 | * |
||||||||
| 35 | * @author Brian Wahoff <[email protected]> |
||||||||
| 36 | */ |
||||||||
| 37 | class NotificationService extends Service |
||||||||
| 38 | { |
||||||||
| 39 | /** |
||||||||
| 40 | * Instance of the staff object |
||||||||
| 41 | * |
||||||||
| 42 | * @var object |
||||||||
| 43 | */ |
||||||||
| 44 | public $staffHandler; |
||||||||
| 45 | /** |
||||||||
| 46 | * Instance of the xoops text sanitizer |
||||||||
| 47 | * |
||||||||
| 48 | * @var object |
||||||||
| 49 | */ |
||||||||
| 50 | public $myTextSanitizer; |
||||||||
| 51 | /** |
||||||||
| 52 | * Path to the mail_template directory |
||||||||
| 53 | * |
||||||||
| 54 | * @var string |
||||||||
| 55 | */ |
||||||||
| 56 | public $templateDir = ''; |
||||||||
| 57 | /** |
||||||||
| 58 | * Instance of the module object |
||||||||
| 59 | * |
||||||||
| 60 | * @var object |
||||||||
| 61 | */ |
||||||||
| 62 | public $module; |
||||||||
| 63 | /** |
||||||||
| 64 | * Instance of the notification object |
||||||||
| 65 | * |
||||||||
| 66 | * @var object |
||||||||
| 67 | */ |
||||||||
| 68 | public $notificationHandler; |
||||||||
| 69 | /** |
||||||||
| 70 | * Instance of the status object |
||||||||
| 71 | * |
||||||||
| 72 | * @var object |
||||||||
| 73 | */ |
||||||||
| 74 | public $statusHandler; |
||||||||
| 75 | |||||||||
| 76 | /** |
||||||||
| 77 | * Class Constructor |
||||||||
| 78 | */ |
||||||||
| 79 | public function __construct() |
||||||||
| 80 | { |
||||||||
| 81 | global $xoopsConfig, $xoopsModule; |
||||||||
| 82 | $db = \XoopsDatabaseFactory::getDatabaseConnection(); |
||||||||
| 83 | $this->myTextSanitizer = \MyTextSanitizer::getInstance(); |
||||||||
| 84 | $this->templateDir = $this->getTemplateDir($xoopsConfig['language']); |
||||||||
| 85 | $this->module = Utility::getModule(); |
||||||||
| 86 | $this->staffHandler = new StaffHandler($db); |
||||||||
| 87 | $this->notificationHandler = new NotificationHandler($db); |
||||||||
| 88 | $this->statusHandler = new StatusHandler($db); |
||||||||
| 89 | $this->helper = Helper::getInstance(); |
||||||||
|
0 ignored issues
–
show
Bug
introduced
by
Loading history...
|
|||||||||
| 90 | $this->init(); |
||||||||
| 91 | } |
||||||||
| 92 | |||||||||
| 93 | /** |
||||||||
| 94 | * Retrieve the email_template object that is requested |
||||||||
| 95 | * |
||||||||
| 96 | * @param string|int $category ID or name of item |
||||||||
| 97 | * @param string $event name of event |
||||||||
| 98 | * @param object $module $xoopsModule object |
||||||||
| 99 | * @param mixed $template_id |
||||||||
| 100 | * |
||||||||
| 101 | * @return bool|array |
||||||||
| 102 | */ |
||||||||
| 103 | public function getEmailTpl($category, string $event, object $module, &$template_id) |
||||||||
| 104 | { |
||||||||
| 105 | $templates = $module->getInfo('_email_tpl'); // Gets $modversion['_email_tpl'] array from xoops_version.php |
||||||||
| 106 | |||||||||
| 107 | foreach ($templates as $tpl_id => $tpl) { |
||||||||
| 108 | if ($tpl['category'] == $category && $tpl['name'] == $event) { |
||||||||
| 109 | $template_id = $tpl_id; |
||||||||
| 110 | |||||||||
| 111 | return $tpl; |
||||||||
| 112 | } |
||||||||
| 113 | } |
||||||||
| 114 | |||||||||
| 115 | return false; |
||||||||
| 116 | } |
||||||||
| 117 | |||||||||
| 118 | /* |
||||||||
| 119 | * Returns a group of $staffRole objects |
||||||||
| 120 | * |
||||||||
| 121 | * @access int $dept ID of department |
||||||||
| 122 | * @access array $aMembers array of all possible staff members |
||||||||
| 123 | * |
||||||||
| 124 | * @access private |
||||||||
| 125 | */ |
||||||||
| 126 | |||||||||
| 127 | /** |
||||||||
| 128 | * @param int|string $dept |
||||||||
| 129 | * @param array $aMembers |
||||||||
| 130 | * @return array |
||||||||
| 131 | */ |
||||||||
| 132 | public function &getStaffRoles($dept, array $aMembers): array |
||||||||
| 133 | { |
||||||||
| 134 | $staffRoleHandler = $this->helper->getHandler('StaffRole'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 135 | |||||||||
| 136 | // Retrieve roles of all members |
||||||||
| 137 | $criteria = new \CriteriaCompo(new \Criteria('uid', '(' . \implode(',', $aMembers) . ')', 'IN')); |
||||||||
| 138 | $criteria->add(new \Criteria('deptid', $dept)); |
||||||||
| 139 | $staffRoles = $staffRoleHandler->getObjects($criteria, false); // array of staff role objects |
||||||||
| 140 | |||||||||
| 141 | return $staffRoles; |
||||||||
| 142 | } |
||||||||
| 143 | |||||||||
| 144 | /* |
||||||||
| 145 | * Gets a list of staff members that have the notification selected |
||||||||
| 146 | * |
||||||||
| 147 | * @access object $staffRoles staffRole objects |
||||||||
| 148 | * @access array $aMembers array of all possible staff members |
||||||||
| 149 | * @access array $staff_options array of acceptable departments |
||||||||
| 150 | * |
||||||||
| 151 | * @access private |
||||||||
| 152 | */ |
||||||||
| 153 | |||||||||
| 154 | /** |
||||||||
| 155 | * @param array $staffRoles |
||||||||
| 156 | * @param array $aMembers |
||||||||
| 157 | * @param array $staff_options |
||||||||
| 158 | * @return array |
||||||||
| 159 | */ |
||||||||
| 160 | public function &getEnabledStaff(array $staffRoles, array $aMembers, array $staff_options): array |
||||||||
| 161 | { |
||||||||
| 162 | // Get only staff members that have permission for this notification |
||||||||
| 163 | $enabled_staff = []; |
||||||||
| 164 | foreach ($aMembers as $aMember) { |
||||||||
| 165 | foreach ($staffRoles as $staffRole) { |
||||||||
| 166 | if ($staffRole->getVar('uid') == $aMember && \in_array($staffRole->getVar('roleid'), $staff_options)) { |
||||||||
| 167 | $enabled_staff[$aMember] = $aMember; |
||||||||
| 168 | break; |
||||||||
| 169 | } |
||||||||
| 170 | } |
||||||||
| 171 | } |
||||||||
| 172 | unset($aMembers); |
||||||||
| 173 | |||||||||
| 174 | return $enabled_staff; |
||||||||
| 175 | } |
||||||||
| 176 | |||||||||
| 177 | /* |
||||||||
| 178 | * Used to retrieve a list of xoops user objects |
||||||||
| 179 | * |
||||||||
| 180 | * @param array $enabled_staff array of staff members that have the notification enabled |
||||||||
| 181 | * |
||||||||
| 182 | * @access private |
||||||||
| 183 | */ |
||||||||
| 184 | |||||||||
| 185 | /** |
||||||||
| 186 | * @param array $enabled_staff |
||||||||
| 187 | * @param bool $active_only |
||||||||
| 188 | * @return array |
||||||||
| 189 | */ |
||||||||
| 190 | public function &getXoopsUsers(array $enabled_staff, bool $active_only = true): array |
||||||||
| 191 | { |
||||||||
| 192 | $xoopsUsers = []; |
||||||||
| 193 | /** @var \XoopsMemberHandler $memberHandler */ |
||||||||
| 194 | $memberHandler = \xoops_getHandler('member'); |
||||||||
| 195 | if (\count($enabled_staff) > 0) { |
||||||||
| 196 | $criteria = new \CriteriaCompo(new \Criteria('uid', '(' . \implode(',', $enabled_staff) . ')', 'IN')); |
||||||||
| 197 | } else { |
||||||||
| 198 | return $xoopsUsers; |
||||||||
| 199 | } |
||||||||
| 200 | if ($active_only) { |
||||||||
| 201 | $criteria->add(new \Criteria('level', '0', '>')); |
||||||||
| 202 | } |
||||||||
| 203 | $xoopsUsers = $memberHandler->getUsers($criteria, true); // xoopsUser objects |
||||||||
| 204 | unset($enabled_staff); |
||||||||
| 205 | |||||||||
| 206 | return $xoopsUsers; |
||||||||
| 207 | } |
||||||||
| 208 | |||||||||
| 209 | /** |
||||||||
| 210 | * Returns only the accepted staff members after having their permissions checked |
||||||||
| 211 | * @param array $aMembers array of all possible staff members |
||||||||
| 212 | * @param Ticket|int $ticket xhelp_ticket object |
||||||||
| 213 | * @param Notification $settings xhelp_notification object |
||||||||
| 214 | * @param int $submittedBy ID of ticket submitter |
||||||||
| 215 | * @return array of XoopsUser objects |
||||||||
| 216 | */ |
||||||||
| 217 | public function &checkStaffSetting(array $aMembers, $ticket, Notification $settings, int $submittedBy): array |
||||||||
|
0 ignored issues
–
show
The parameter
$submittedBy is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body. Loading history...
|
|||||||||
| 218 | { |
||||||||
| 219 | // $submittedBy = (int)$submittedBy; |
||||||||
| 220 | $dept = $ticket; |
||||||||
| 221 | if (\is_object($ticket)) { |
||||||||
| 222 | $dept = $ticket->getVar('department'); |
||||||||
| 223 | } |
||||||||
| 224 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 225 | $staff_options = $settings->getVar('staff_options') ?? ''; |
||||||||
| 226 | |||||||||
| 227 | $staffRoles = $this->getStaffRoles($dept, $aMembers); // Get list of the staff members' roles |
||||||||
| 228 | $enabled_staff = $this->getEnabledStaff($staffRoles, $aMembers, $staff_options); |
||||||||
|
0 ignored issues
–
show
It seems like
$staff_options can also be of type boolean and null and string; however, parameter $staff_options of XoopsModules\Xhelp\Notif...vice::getEnabledStaff() does only seem to accept array, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 229 | $xoopsUsers = $this->getXoopsUsers($enabled_staff); |
||||||||
| 230 | |||||||||
| 231 | return $xoopsUsers; |
||||||||
| 232 | } |
||||||||
| 233 | |||||||||
| 234 | /** |
||||||||
| 235 | * Returns an array of staff UID's |
||||||||
| 236 | * |
||||||||
| 237 | * @param array $members xhelp_staff objects |
||||||||
| 238 | * @param string|int $submittedBy |
||||||||
| 239 | * @param bool $removeSubmitter |
||||||||
| 240 | * @return array |
||||||||
| 241 | */ |
||||||||
| 242 | private function &makeMemberArray(array $members, $submittedBy, bool $removeSubmitter = false): array |
||||||||
| 243 | { |
||||||||
| 244 | $aMembers = []; |
||||||||
| 245 | $submittedBy = (int)$submittedBy; |
||||||||
| 246 | foreach ($members as $member) { // Full list of dept members |
||||||||
| 247 | if ($removeSubmitter) { |
||||||||
| 248 | if ($member->getVar('uid') == $submittedBy) { // Remove the staff member that submitted from the email list |
||||||||
| 249 | continue; |
||||||||
| 250 | } |
||||||||
| 251 | |||||||||
| 252 | $aMembers[$member->getVar('uid')] = $member->getVar('uid'); |
||||||||
| 253 | } else { |
||||||||
| 254 | $aMembers[$member->getVar('uid')] = $member->getVar('uid'); |
||||||||
| 255 | } |
||||||||
| 256 | } |
||||||||
| 257 | |||||||||
| 258 | return $aMembers; |
||||||||
| 259 | } |
||||||||
| 260 | |||||||||
| 261 | /** |
||||||||
| 262 | * Returns emails of staff belonging to an event |
||||||||
| 263 | * |
||||||||
| 264 | * @param Ticket|int $ticket |
||||||||
| 265 | * @param int $event_id bit_value of event |
||||||||
| 266 | * @param Notification $settings |
||||||||
| 267 | * @param int|null $submittedBy ID of user submitting event - should only be used when there is a response |
||||||||
| 268 | * @return array |
||||||||
| 269 | * @internal param int $dept ID of department |
||||||||
| 270 | */ |
||||||||
| 271 | public function &getSubscribedStaff($ticket, int $event_id, Notification $settings, int $submittedBy = null): array |
||||||||
| 272 | { |
||||||||
| 273 | global $xoopsUser; |
||||||||
| 274 | |||||||||
| 275 | $arr = []; |
||||||||
| 276 | /** @var \XoopsModules\Xhelp\MembershipHandler $membershipHandler */ |
||||||||
| 277 | $membershipHandler = $this->helper->getHandler('Membership'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 278 | /** @var \XoopsMemberHandler $memberHandler */ |
||||||||
| 279 | $memberHandler = \xoops_getHandler('member'); |
||||||||
| 280 | |||||||||
| 281 | if (\is_object($ticket)) { |
||||||||
| 282 | if (!$submittedBy) { |
||||||||
|
0 ignored issues
–
show
The expression
$submittedBy of type integer|null is loosely compared to false; this is ambiguous if the integer can be 0. You might want to explicitly use === null instead.
In PHP, under loose comparison (like For 0 == false // true
0 == null // true
123 == false // false
123 == null // false
// It is often better to use strict comparison
0 === false // false
0 === null // false
Loading history...
|
|||||||||
| 283 | $submittedBy = $ticket->getVar('uid'); |
||||||||
| 284 | } |
||||||||
| 285 | $owner = $ticket->getVar('ownership'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 286 | $dept = $ticket->getVar('department'); |
||||||||
| 287 | } else { |
||||||||
| 288 | $dept = (int)$ticket; |
||||||||
| 289 | } |
||||||||
| 290 | $submittedBy = (int)$submittedBy; |
||||||||
| 291 | |||||||||
| 292 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 293 | $staff_options = $settings->getVar('staff_options') ?? ''; |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 294 | switch ($staff_setting) { |
||||||||
| 295 | case \XHELP_NOTIF_STAFF_DEPT: // Department Staff can receive notification |
||||||||
| 296 | $members = $membershipHandler->membershipByDept($dept); // Staff objects |
||||||||
| 297 | $aMembers = $this->makeMemberArray($members, $submittedBy, true); |
||||||||
| 298 | $xoopsUsers = $this->checkStaffSetting($aMembers, $ticket, $settings, $submittedBy); |
||||||||
| 299 | break; |
||||||||
| 300 | case \XHELP_NOTIF_STAFF_OWNER: // Ticket Owner can receive notification |
||||||||
| 301 | $members = $membershipHandler->membershipByDept($dept); |
||||||||
| 302 | if (0 != $ticket->getVar('ownership')) { // If there is a ticket owner |
||||||||
| 303 | $ticket_owner = $ticket->getVar('ownership'); |
||||||||
| 304 | $aMembers[$ticket_owner] = $ticket_owner; |
||||||||
|
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
|
|||||||||
| 305 | $criteria = new \Criteria('uid', '(' . \implode(',', $aMembers) . ')', 'IN'); |
||||||||
| 306 | unset($aMembers); |
||||||||
| 307 | $xoopsUsers = $memberHandler->getUsers($criteria, true); // xoopsUser objects |
||||||||
| 308 | } else { // If no ticket owner, send to dept staff |
||||||||
| 309 | $aMembers = $this->makeMemberArray($members, 0, true); |
||||||||
| 310 | $xoopsUsers = $this->checkStaffSetting($aMembers, $ticket, $settings, $submittedBy); |
||||||||
| 311 | } |
||||||||
| 312 | break; |
||||||||
| 313 | case \XHELP_NOTIF_STAFF_NONE: // Notification is turned off |
||||||||
| 314 | default: |
||||||||
| 315 | return $arr; |
||||||||
| 316 | } |
||||||||
| 317 | |||||||||
| 318 | //Sort users based on Notification Preference |
||||||||
| 319 | foreach ($xoopsUsers as $xUser) { |
||||||||
| 320 | $cMember = $members[$xUser->getVar('uid')]; |
||||||||
| 321 | |||||||||
| 322 | if (!empty($cMember) && ($xUser->uid() != $xoopsUser->uid())) { |
||||||||
| 323 | if ($this->isSubscribed($cMember, $event_id)) { |
||||||||
| 324 | if (2 == $xUser->getVar('notify_method')) { // Send by email |
||||||||
| 325 | $arr['email'][] = $members[$xUser->getVar('uid')]->getVar('email'); |
||||||||
| 326 | } elseif (1 == $xUser->getVar('notify_method')) { // Send by pm |
||||||||
| 327 | $arr['pm'][] = $xUser; |
||||||||
| 328 | } |
||||||||
| 329 | } |
||||||||
| 330 | } |
||||||||
| 331 | } |
||||||||
| 332 | |||||||||
| 333 | return $arr; |
||||||||
| 334 | } |
||||||||
| 335 | |||||||||
| 336 | /** |
||||||||
| 337 | * Returns emails of users belonging to a ticket |
||||||||
| 338 | * |
||||||||
| 339 | * @param int $ticketId ID of ticket |
||||||||
| 340 | * @return array |
||||||||
| 341 | */ |
||||||||
| 342 | public function &getSubscribedUsers(int $ticketId): array |
||||||||
| 343 | { |
||||||||
| 344 | global $xoopsUser; |
||||||||
| 345 | |||||||||
| 346 | // $ticketId = (int)$ticketId; |
||||||||
| 347 | |||||||||
| 348 | /** @var \XoopsModules\Xhelp\TicketEmailsHandler $ticketEmailsHandler */ |
||||||||
| 349 | $ticketEmailsHandler = $this->helper->getHandler('TicketEmails'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 350 | /** @var \XoopsMemberHandler $memberHandler */ |
||||||||
| 351 | $memberHandler = \xoops_getHandler('member'); |
||||||||
| 352 | |||||||||
| 353 | //Get all Subscribed users, except for the current user |
||||||||
| 354 | $criteria = new \CriteriaCompo(new \Criteria('ticketid', (string)$ticketId)); |
||||||||
| 355 | $criteria->add(new \Criteria('suppress', '0')); |
||||||||
| 356 | $criteria->add(new \Criteria('email', $xoopsUser->email(), '<>')); |
||||||||
| 357 | |||||||||
| 358 | $users = $ticketEmailsHandler->getObjects($criteria); // xhelp_ticketEmail objects |
||||||||
| 359 | |||||||||
| 360 | $aUsers = []; |
||||||||
| 361 | $arr = []; |
||||||||
| 362 | foreach ($users as $user) { |
||||||||
| 363 | if (0 != $user->getVar('uid')) { |
||||||||
| 364 | $aUsers[$user->getVar('email')] = $user->getVar('uid'); |
||||||||
| 365 | } else { |
||||||||
| 366 | // Add users with just email to array |
||||||||
| 367 | $arr['email'][] = $user->getVar('email'); |
||||||||
| 368 | } |
||||||||
| 369 | } |
||||||||
| 370 | |||||||||
| 371 | $xoopsUsers = []; |
||||||||
| 372 | if (!empty($aUsers)) { |
||||||||
| 373 | $criteria = new \Criteria('uid', '(' . \implode(',', $aUsers) . ')', 'IN'); |
||||||||
| 374 | $xoopsUsers = $memberHandler->getUsers($criteria, true); // xoopsUser objects |
||||||||
| 375 | } |
||||||||
| 376 | unset($aUsers); |
||||||||
| 377 | |||||||||
| 378 | // @todo - replace notify_method integers with constants |
||||||||
| 379 | // Add users with uid |
||||||||
| 380 | foreach ($xoopsUsers as $xUser) { // Find which method user prefers for sending message |
||||||||
| 381 | if (2 == $xUser->getVar('notify_method')) { |
||||||||
| 382 | $arr['email'][] = $xUser->getVar('email'); |
||||||||
| 383 | } elseif (1 == $xUser->getVar('notify_method')) { |
||||||||
| 384 | $arr['pm'][] = $xUser; |
||||||||
| 385 | } |
||||||||
| 386 | } |
||||||||
| 387 | |||||||||
| 388 | return $arr; |
||||||||
| 389 | } |
||||||||
| 390 | |||||||||
| 391 | /** |
||||||||
| 392 | * Checks to see if the staff member is subscribed to receive the notification for this event |
||||||||
| 393 | * |
||||||||
| 394 | * @param int|Staff $user userid/staff object of staff member |
||||||||
| 395 | * @param int $event_id value of the event |
||||||||
| 396 | * @return bool true is suscribed, false if not |
||||||||
| 397 | */ |
||||||||
| 398 | public function isSubscribed($user, int $event_id): bool |
||||||||
| 399 | { |
||||||||
| 400 | if (!\is_object($user)) { //If user is not an object, retrieve a staff object using the uid |
||||||||
| 401 | if (\is_numeric($user)) { |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 402 | $uid = $user; |
||||||||
| 403 | $staffHandler = $this->helper->getHandler('Staff'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 404 | if (!$user = $staffHandler->getByUid($uid)) { |
||||||||
| 405 | return false; |
||||||||
| 406 | } |
||||||||
| 407 | } |
||||||||
| 408 | } |
||||||||
| 409 | |||||||||
| 410 | return ($user->getVar('notify') & (2 ** $event_id)) > 0; |
||||||||
| 411 | } |
||||||||
| 412 | |||||||||
| 413 | /** |
||||||||
| 414 | * Retrieve a user's email address |
||||||||
| 415 | * |
||||||||
| 416 | * @param int $uid user's id |
||||||||
| 417 | * @return array array's email |
||||||||
| 418 | */ |
||||||||
| 419 | public function getUserEmail(int $uid): array |
||||||||
| 420 | { |
||||||||
| 421 | global $xoopsUser; |
||||||||
| 422 | $arr = []; |
||||||||
| 423 | $uid = $uid; |
||||||||
| 424 | |||||||||
| 425 | if ($uid == $xoopsUser->getVar('uid')) { // If $uid == current user's uid |
||||||||
| 426 | if (2 == $xoopsUser->getVar('notify_method')) { |
||||||||
| 427 | $arr['email'][] = $xoopsUser->getVar('email'); // return their email |
||||||||
| 428 | } elseif (1 == $xoopsUser->getVar('notify_method')) { |
||||||||
| 429 | $arr['pm'][] = $xoopsUser; |
||||||||
| 430 | } |
||||||||
| 431 | } else { |
||||||||
| 432 | /** @var \XoopsMemberHandler $memberHandler */ |
||||||||
| 433 | $memberHandler = \xoops_getHandler('member'); //otherwise... |
||||||||
| 434 | $member = $memberHandler->getUser($uid); |
||||||||
| 435 | if ($member) { |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 436 | if (2 == $member->getVar('notify_method')) { |
||||||||
| 437 | $arr['email'][] = $member->getVar('email'); |
||||||||
| 438 | } elseif (1 == $member->getVar('notify_method')) { |
||||||||
| 439 | $arr['pm'][] = $member; |
||||||||
| 440 | } |
||||||||
| 441 | } else { |
||||||||
| 442 | $arr['email'][] = ''; |
||||||||
| 443 | } |
||||||||
| 444 | } |
||||||||
| 445 | |||||||||
| 446 | return $arr; |
||||||||
| 447 | } |
||||||||
| 448 | |||||||||
| 449 | /** |
||||||||
| 450 | * Retrieves a staff member's email address |
||||||||
| 451 | * |
||||||||
| 452 | * @param int $uid user's id |
||||||||
| 453 | * @param int|string|null $dept |
||||||||
| 454 | * @param array|null $staff_options |
||||||||
| 455 | * @return array member's email |
||||||||
| 456 | */ |
||||||||
| 457 | public function getStaffEmail(int $uid, $dept = null, ?array $staff_options = null): array |
||||||||
| 458 | { |
||||||||
| 459 | $uid = $uid; |
||||||||
| 460 | $dept = (int)$dept; |
||||||||
| 461 | /** @var \XoopsMemberHandler $memberHandler */ |
||||||||
| 462 | $memberHandler = \xoops_getHandler('member'); |
||||||||
| 463 | $arr = []; |
||||||||
| 464 | |||||||||
| 465 | // Check staff roles to staff options making sure the staff has permission |
||||||||
| 466 | $staffRoles = $this->staffHandler->getRolesByDept($uid, $dept, true); |
||||||||
| 467 | $bFound = true; |
||||||||
| 468 | foreach ($staff_options as $option) { |
||||||||
| 469 | if (\array_key_exists($option, $staffRoles)) { |
||||||||
| 470 | $bFound = true; |
||||||||
| 471 | break; |
||||||||
| 472 | } |
||||||||
| 473 | |||||||||
| 474 | $bFound = false; |
||||||||
| 475 | } |
||||||||
| 476 | if (!$bFound) { |
||||||||
| 477 | return $arr; |
||||||||
| 478 | } |
||||||||
| 479 | |||||||||
| 480 | $staff = $this->staffHandler->getByUid($uid); |
||||||||
| 481 | if ($staff) { |
||||||||
| 482 | $member = $memberHandler->getUser($uid); |
||||||||
| 483 | if ($member) { |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 484 | if (2 == $member->getVar('notify_method')) { |
||||||||
| 485 | $arr['email'][] = $staff->getVar('email'); |
||||||||
| 486 | } elseif (1 == $member->getVar('notify_method')) { |
||||||||
| 487 | $arr['pm'][] = $member; |
||||||||
| 488 | } |
||||||||
| 489 | } else { |
||||||||
| 490 | $arr['email'][] = ''; |
||||||||
| 491 | } |
||||||||
| 492 | } else { |
||||||||
| 493 | $arr['email'][] = ''; |
||||||||
| 494 | } |
||||||||
| 495 | |||||||||
| 496 | return $arr; |
||||||||
| 497 | } |
||||||||
| 498 | |||||||||
| 499 | /** |
||||||||
| 500 | * Send pm and email notifications to selected users |
||||||||
| 501 | * |
||||||||
| 502 | * @param object|array $email_tpl object returned from getEmailTpl() function |
||||||||
| 503 | * @param array $sendTo emails and xoopsUser objects |
||||||||
| 504 | * @param array $tags array of notification information |
||||||||
| 505 | * @param string $fromEmail |
||||||||
| 506 | * @return bool TRUE if success, FALSE if no success |
||||||||
| 507 | */ |
||||||||
| 508 | public function sendEvents($email_tpl, array $sendTo, array $tags, string $fromEmail = ''): bool |
||||||||
| 509 | { |
||||||||
| 510 | $ret = true; |
||||||||
| 511 | if (\array_key_exists('pm', $sendTo)) { |
||||||||
| 512 | $ret = $ret && $this->sendEventPM($email_tpl, $sendTo, $tags, $fromEmail); |
||||||||
| 513 | } |
||||||||
| 514 | |||||||||
| 515 | if (\array_key_exists('email', $sendTo)) { |
||||||||
| 516 | $ret = $ret && $this->sendEventEmail($email_tpl, $sendTo, $tags, $fromEmail); |
||||||||
| 517 | } |
||||||||
| 518 | |||||||||
| 519 | return $ret; |
||||||||
| 520 | } |
||||||||
| 521 | |||||||||
| 522 | /** |
||||||||
| 523 | * Send the pm notification to selected users |
||||||||
| 524 | * |
||||||||
| 525 | * @param object|array $email_tpl object returned from getEmailTpl() function |
||||||||
| 526 | * @param array $sendTo xoopsUser objects |
||||||||
| 527 | * @param array $tags array of notification information |
||||||||
| 528 | * @param string $fromEmail |
||||||||
| 529 | * @return bool TRUE if success, FALSE if no success |
||||||||
| 530 | */ |
||||||||
| 531 | public function sendEventPM($email_tpl, array $sendTo, array $tags, string $fromEmail = ''): bool |
||||||||
|
0 ignored issues
–
show
The parameter
$fromEmail is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body. Loading history...
|
|||||||||
| 532 | { |
||||||||
| 533 | $notify_pm = ''; |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 534 | global $xoopsConfig, $xoopsUser; |
||||||||
| 535 | |||||||||
| 536 | $notify_pm = $sendTo['pm']; |
||||||||
| 537 | |||||||||
| 538 | $tags = \array_merge($tags, $this->getCommonTplVars()); // Retrieve the common template vars and add to array |
||||||||
| 539 | $xoopsMailer = \xoops_getMailer(); |
||||||||
| 540 | $xoopsMailer->usePM(); |
||||||||
| 541 | |||||||||
| 542 | foreach ($tags as $k => $v) { |
||||||||
| 543 | $xoopsMailer->assign($k, \preg_replace('/&/i', '&', $v)); |
||||||||
| 544 | } |
||||||||
| 545 | $xoopsMailer->setTemplateDir($this->templateDir); // Set template dir |
||||||||
| 546 | $xoopsMailer->setTemplate($email_tpl['mail_template'] . '.tpl'); // Set the template to be used |
||||||||
| 547 | |||||||||
| 548 | /** @var \XoopsConfigHandler $configHandler */ |
||||||||
| 549 | $configHandler = \xoops_getHandler('config'); |
||||||||
| 550 | /** @var \XoopsMemberHandler $memberHandler */ |
||||||||
| 551 | $memberHandler = \xoops_getHandler('member'); |
||||||||
| 552 | $xoopsMailerConfig = $configHandler->getConfigsByCat(\XOOPS_CONF_MAILER); |
||||||||
| 553 | $xoopsMailer->setFromUser($memberHandler->getUser($xoopsMailerConfig['fromuid'])); |
||||||||
| 554 | $xoopsMailer->setToUsers($notify_pm); |
||||||||
| 555 | $xoopsMailer->setSubject($email_tpl['mail_subject']); // Set the subject of the email |
||||||||
| 556 | $xoopsMailer->setFromName($xoopsConfig['sitename']); // Set a from address |
||||||||
| 557 | $success = $xoopsMailer->send(true); |
||||||||
| 558 | |||||||||
| 559 | return $success; |
||||||||
| 560 | } |
||||||||
| 561 | |||||||||
| 562 | /** |
||||||||
| 563 | * Send the mail notification to selected users |
||||||||
| 564 | * |
||||||||
| 565 | * @param object|array $email_tpl object returned from getEmailTpl() function |
||||||||
| 566 | * @param array $sendTo emails returned from getSubscribedStaff() function |
||||||||
| 567 | * @param array $tags array of notification information |
||||||||
| 568 | * @param string $fromEmail |
||||||||
| 569 | * @return bool TRUE if success, FALSE if no success |
||||||||
| 570 | */ |
||||||||
| 571 | public function sendEventEmail($email_tpl, array $sendTo, array $tags, string $fromEmail = ''): bool |
||||||||
| 572 | { |
||||||||
| 573 | $notify_email = ''; |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 574 | global $xoopsConfig; |
||||||||
| 575 | |||||||||
| 576 | $notify_email = $sendTo['email']; |
||||||||
| 577 | |||||||||
| 578 | $tags = \array_merge($tags, $this->getCommonTplVars()); // Retrieve the common template vars and add to array |
||||||||
| 579 | $xoopsMailer = \xoops_getMailer(); |
||||||||
| 580 | $xoopsMailer->useMail(); |
||||||||
| 581 | |||||||||
| 582 | foreach ($tags as $k => $v) { |
||||||||
| 583 | $xoopsMailer->assign($k, \preg_replace('/&/i', '&', $v)); |
||||||||
| 584 | } |
||||||||
| 585 | $xoopsMailer->setTemplateDir($this->templateDir); // Set template dir |
||||||||
| 586 | $xoopsMailer->setTemplate($email_tpl['mail_template'] . '.tpl'); // Set the template to be used |
||||||||
| 587 | if ('' !== $fromEmail) { |
||||||||
| 588 | $xoopsMailer->setFromEmail($fromEmail); |
||||||||
| 589 | } |
||||||||
| 590 | $xoopsMailer->setToEmails($notify_email); // Set who the email goes to |
||||||||
| 591 | $xoopsMailer->setSubject($email_tpl['mail_subject']); // Set the subject of the email |
||||||||
| 592 | $xoopsMailer->setFromName($xoopsConfig['sitename']); // Set a from address |
||||||||
| 593 | $success = $xoopsMailer->send(true); |
||||||||
| 594 | |||||||||
| 595 | return $success; |
||||||||
| 596 | } |
||||||||
| 597 | |||||||||
| 598 | /** |
||||||||
| 599 | * Get a list of the common constants required for notifications |
||||||||
| 600 | * |
||||||||
| 601 | * @return array |
||||||||
| 602 | */ |
||||||||
| 603 | public function &getCommonTplVars(): array |
||||||||
| 604 | { |
||||||||
| 605 | global $xoopsConfig; |
||||||||
| 606 | $tags = []; |
||||||||
| 607 | $tags['X_MODULE'] = $this->module->getVar('name'); |
||||||||
| 608 | $tags['X_SITEURL'] = \XHELP_SITE_URL; |
||||||||
| 609 | $tags['X_SITENAME'] = $xoopsConfig['sitename']; |
||||||||
| 610 | $tags['X_ADMINMAIL'] = $xoopsConfig['adminmail']; |
||||||||
| 611 | $tags['X_MODULE_URL'] = \XHELP_BASE_URL . '/'; |
||||||||
| 612 | |||||||||
| 613 | return $tags; |
||||||||
| 614 | } |
||||||||
| 615 | |||||||||
| 616 | /** |
||||||||
| 617 | * Retrieve the directory where mail templates are stored |
||||||||
| 618 | * |
||||||||
| 619 | * @param string $language language used for xoops |
||||||||
| 620 | * @return string |
||||||||
| 621 | */ |
||||||||
| 622 | public function getTemplateDir(string $language): string |
||||||||
| 623 | { |
||||||||
| 624 | $path = XOOPS_ROOT_PATH . '/modules/xhelp/language/' . $language . '/mail_template'; |
||||||||
| 625 | if (\is_dir($path)) { |
||||||||
| 626 | return $path; |
||||||||
| 627 | } |
||||||||
| 628 | |||||||||
| 629 | return XOOPS_ROOT_PATH . '/modules/xhelp/language/english/mail_template'; |
||||||||
| 630 | } |
||||||||
| 631 | |||||||||
| 632 | /** |
||||||||
| 633 | * Returns the number of department notifications |
||||||||
| 634 | * |
||||||||
| 635 | * @return int number of department notifications |
||||||||
| 636 | */ |
||||||||
| 637 | public function getNumDeptNotifications(): int |
||||||||
| 638 | { |
||||||||
| 639 | $num = 0; |
||||||||
| 640 | $templates = $this->module->getInfo('_email_tpl'); |
||||||||
| 641 | foreach ($templates as $template) { |
||||||||
| 642 | if ('dept' === $template['category']) { |
||||||||
| 643 | ++$num; |
||||||||
| 644 | } |
||||||||
| 645 | } |
||||||||
| 646 | |||||||||
| 647 | return $num; |
||||||||
| 648 | } |
||||||||
| 649 | |||||||||
| 650 | /** |
||||||||
| 651 | * Returns the email address of the person causing the fire of the event |
||||||||
| 652 | * |
||||||||
| 653 | * @param int $uid uid of the user |
||||||||
| 654 | * @return array email of user |
||||||||
| 655 | */ |
||||||||
| 656 | public function getEmail(int $uid): array |
||||||||
| 657 | { |
||||||||
| 658 | if (!$isStaff = $this->staffHandler->isStaff($uid)) { |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 659 | return $this->getUserEmail($uid); |
||||||||
| 660 | } |
||||||||
| 661 | |||||||||
| 662 | return $this->getStaffEmail($uid); |
||||||||
| 663 | } |
||||||||
| 664 | |||||||||
| 665 | /** |
||||||||
| 666 | * Confirm submission to user and notify staff members when new_ticket is triggered |
||||||||
| 667 | * @param Ticket $ticket Ticket that was added |
||||||||
| 668 | */ |
||||||||
| 669 | public function new_ticket(Ticket $ticket): void |
||||||||
| 670 | { |
||||||||
| 671 | global $xhelp_isStaff; |
||||||||
| 672 | global $xoopsUser; |
||||||||
| 673 | $helper = Helper::getInstance(); |
||||||||
| 674 | |||||||||
| 675 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 676 | $displayName = $helper->getConfig('xhelp_displayName'); // Determines if username or real name is displayed |
||||||||
| 677 | |||||||||
| 678 | $tags = []; |
||||||||
| 679 | $tags['TICKET_ID'] = $ticket->getVar('id'); |
||||||||
| 680 | $tags['TICKET_SUBJECT'] = ($ticket->getVar('subject', 'n')); |
||||||||
| 681 | $tags['TICKET_DESCRIPTION'] = ($ticket->getVar('description', 'n')); |
||||||||
| 682 | $tags['TICKET_PRIORITY'] = Utility::getPriority($ticket->getVar('priority')); |
||||||||
| 683 | $tags['TICKET_POSTED'] = $ticket->posted(); |
||||||||
| 684 | $tags['TICKET_CREATED'] = Utility::getUsername($ticket->getVar('uid'), $displayName); |
||||||||
|
0 ignored issues
–
show
It seems like
$displayName can also be of type null; however, parameter $displayName of XoopsModules\Xhelp\Utility::getUsername() does only seem to accept integer, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 685 | $tags['TICKET_SUPPORT_KEY'] = ($ticket->getVar('serverid') ? '{' . $ticket->getVar('emailHash') . '}' : ''); |
||||||||
| 686 | $tags['TICKET_URL'] = \XHELP_BASE_URL . '/ticket.php?id=' . $ticket->getVar('id'); |
||||||||
| 687 | $tags['TICKET_DEPARTMENT'] = ($departmentHandler->getNameById($ticket->getVar('department'))); |
||||||||
| 688 | |||||||||
| 689 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_NEWTICKET); |
||||||||
| 690 | // $settings = $this->notificationHandler->create(); |
||||||||
| 691 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 692 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
| 693 | |||||||||
| 694 | if (\XHELP_NOTIF_STAFF_NONE != $staff_setting) { // If staff notification is enabled |
||||||||
| 695 | $email_tpl = $this->getEmailTpl('dept', 'new_ticket', $this->module, $template_id); |
||||||||
| 696 | if ($email_tpl) { // Send email to dept members |
||||||||
| 697 | $sendTo = $this->getSubscribedStaff($ticket, $email_tpl['bit_value'], $settings); |
||||||||
| 698 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 699 | } |
||||||||
| 700 | } |
||||||||
| 701 | if (\XHELP_NOTIF_USER_NO != $user_setting) { // If user notification is enabled |
||||||||
| 702 | if ($ticket->getVar('serverid') > 0) { |
||||||||
| 703 | //this ticket has been submitted by email |
||||||||
| 704 | //get department email address |
||||||||
| 705 | $departmentMailBoxHandler = $this->helper->getHandler('DepartmentMailBox'); |
||||||||
| 706 | $server = $departmentMailBoxHandler->get($ticket->getVar('serverid')); |
||||||||
| 707 | |||||||||
| 708 | $tags['TICKET_SUPPORT_EMAIL'] = $server->getVar('emailaddress'); |
||||||||
| 709 | |||||||||
| 710 | $email_tpl = $this->getEmailTpl('ticket', 'new_this_ticket_via_email', $this->module, $template_id); |
||||||||
| 711 | if ($email_tpl) { |
||||||||
| 712 | $sendTo = $this->getUserEmail($ticket->getVar('uid')); |
||||||||
| 713 | $success = $this->sendEvents($email_tpl, $sendTo, $tags, $server->getVar('emailaddress')); |
||||||||
| 714 | } |
||||||||
| 715 | } else { //this ticket has been submitted via the website |
||||||||
| 716 | if (!$xhelp_isStaff) { |
||||||||
| 717 | $email_tpl = $this->getEmailTpl('ticket', 'new_this_ticket', $this->module, $template_id); |
||||||||
| 718 | if ($email_tpl) { // Send confirm email to submitter |
||||||||
| 719 | $sendTo = $this->getUserEmail( |
||||||||
| 720 | $ticket->getVar('uid') |
||||||||
| 721 | ); // Will be the only person subscribed |
||||||||
| 722 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
| 723 | } |
||||||||
| 724 | } |
||||||||
| 725 | } |
||||||||
| 726 | } |
||||||||
| 727 | } |
||||||||
| 728 | |||||||||
| 729 | /** |
||||||||
| 730 | * Event: new_user_by_email |
||||||||
| 731 | * Triggered after new user account is created during ticket submission |
||||||||
| 732 | * @param string $password Password for new account |
||||||||
| 733 | * @param \XoopsUser $user XOOPS user object for new account |
||||||||
| 734 | */ |
||||||||
| 735 | public function new_user_by_email(string $password, \XoopsUser $user): void |
||||||||
| 736 | { |
||||||||
| 737 | // Send Welcome Email to submitter |
||||||||
| 738 | //global $xoopsUser; |
||||||||
| 739 | |||||||||
| 740 | $tags = []; |
||||||||
| 741 | $tags['XOOPS_USER_NAME'] = $user->getVar('uname'); |
||||||||
| 742 | $tags['XOOPS_USER_EMAIL'] = $user->getVar('email'); |
||||||||
| 743 | $tags['XOOPS_USER_ID'] = $user->getVar('uname'); |
||||||||
| 744 | $tags['XOOPS_USER_PASSWORD'] = $password; |
||||||||
| 745 | $tags['X_UACTLINK'] = \XHELP_SITE_URL . '/user.php?op=actv&id=' . $user->getVar('uid') . '&actkey=' . $user->getVar('actkey'); |
||||||||
| 746 | |||||||||
| 747 | $email_tpl = $this->getEmailTpl('ticket', 'new_user_byemail', $this->module, $template_id); |
||||||||
| 748 | if ($email_tpl) { |
||||||||
| 749 | $sendTo = $this->getUserEmail($user->getVar('uid')); |
||||||||
| 750 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 751 | } |
||||||||
| 752 | } |
||||||||
| 753 | |||||||||
| 754 | /** |
||||||||
| 755 | * Event: new_user_by_email |
||||||||
| 756 | * Triggered after new user account is created during ticket submission |
||||||||
| 757 | * @param string $password Password for new account |
||||||||
| 758 | * @param \XoopsUser $xoopsUser XOOPS user object for new account |
||||||||
| 759 | */ |
||||||||
| 760 | public function new_user_activation0(string $password, \XoopsUser $xoopsUser): void |
||||||||
|
0 ignored issues
–
show
The parameter
$xoopsUser is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body. Loading history...
|
|||||||||
| 761 | { |
||||||||
| 762 | global $xoopsConfig; |
||||||||
| 763 | $newid = $newuser->getVar('uid'); |
||||||||
|
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
|
|||||||||
| 764 | $uname = $newuser->getVar('uname'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 765 | $email = $newuser->getVar('email'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 766 | |||||||||
| 767 | $tags = []; |
||||||||
| 768 | $tags['XOOPS_USER_NAME'] = $newuser->getVar('uname'); |
||||||||
| 769 | $tags['XOOPS_USER_EMAIL'] = $newuser->getVar('email'); |
||||||||
| 770 | $tags['XOOPS_USER_ID'] = $newuser->getVar('uname'); |
||||||||
| 771 | $tags['XOOPS_USER_PASSWORD'] = $password; |
||||||||
| 772 | $tags['X_UACTLINK'] = \XHELP_SITE_URL . '/user.php?op=actv&id=' . $newuser->getVar('uid') . '&actkey=' . $newuser->getVar('actkey'); |
||||||||
| 773 | |||||||||
| 774 | $email_tpl = $this->getEmailTpl('ticket', 'new_user_byemail', $this->module, $template_id); |
||||||||
| 775 | if ($email_tpl) { |
||||||||
| 776 | $sendTo = $this->getUserEmail($newuser->getVar('uid')); |
||||||||
| 777 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 778 | } |
||||||||
| 779 | } |
||||||||
| 780 | |||||||||
| 781 | /** |
||||||||
| 782 | * Event: new_user_by_email |
||||||||
| 783 | * Triggered after new user account is created during ticket submission |
||||||||
| 784 | * @param string $password Password for new account |
||||||||
| 785 | * @param \XoopsUser $xoopsUser XOOPS user object for new account |
||||||||
| 786 | */ |
||||||||
| 787 | public function new_user_activation1(string $password, \XoopsUser $xoopsUser): void |
||||||||
|
0 ignored issues
–
show
The parameter
$xoopsUser is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body. Loading history...
|
|||||||||
| 788 | { |
||||||||
| 789 | $tags = []; |
||||||||
| 790 | $tags['XOOPS_USER_NAME'] = $user->getVar('uname'); |
||||||||
|
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
|
|||||||||
| 791 | $tags['XOOPS_USER_EMAIL'] = $user->getVar('email'); |
||||||||
| 792 | $tags['XOOPS_USER_ID'] = $user->getVar('uname'); |
||||||||
| 793 | $tags['XOOPS_USER_PASSWORD'] = $password; |
||||||||
| 794 | |||||||||
| 795 | $email_tpl = $this->getEmailTpl('ticket', 'new_user_activation1', $this->module, $template_id); |
||||||||
| 796 | if ($email_tpl) { |
||||||||
| 797 | $sendTo = $this->getUserEmail($user->getVar('uid')); |
||||||||
| 798 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 799 | } |
||||||||
| 800 | |||||||||
| 801 | $_POST['uname'] = $user->getVar('uname'); |
||||||||
| 802 | $_POST['pass'] = $password; |
||||||||
| 803 | |||||||||
| 804 | // For backward compatibility |
||||||||
| 805 | $_POST['uname'] = $user->getVar('uname'); |
||||||||
| 806 | $_POST['pass'] = $password; |
||||||||
| 807 | |||||||||
| 808 | // $filename = XOOPS_ROOT_PATH . '/kernel/authenticationservice.php'; |
||||||||
| 809 | // $foldername = XOOPS_ROOT_PATH . '/include/authenticationservices'; |
||||||||
| 810 | // if (\file_exists($filename) && \file_exists($foldername)) { // check for ldap authentication hack |
||||||||
| 811 | // /** @var \XoopsAuthFactory $authentication_service */ |
||||||||
| 812 | // $authentication_service = \xoops_getHandler('authenticationservice'); |
||||||||
| 813 | // if ($authentication_service) { |
||||||||
| 814 | // $authentication_service->checkLogin(); |
||||||||
| 815 | // } else { |
||||||||
| 816 | // require_once XOOPS_ROOT_PATH . '/include/checklogin.php'; |
||||||||
| 817 | // } |
||||||||
| 818 | // } else { |
||||||||
| 819 | // require_once XOOPS_ROOT_PATH . '/include/checklogin.php'; |
||||||||
| 820 | // } |
||||||||
| 821 | require_once XOOPS_ROOT_PATH . '/include/checklogin.php'; |
||||||||
| 822 | } |
||||||||
| 823 | |||||||||
| 824 | /** |
||||||||
| 825 | * Event: new_user_by_email |
||||||||
| 826 | * Triggered after new user account is created during ticket submission |
||||||||
| 827 | * @param string $password Password for new account |
||||||||
| 828 | * @param \XoopsUser $xoopsUser XOOPS user object for new account |
||||||||
| 829 | */ |
||||||||
| 830 | public function new_user_activation2(string $password, \XoopsUser $xoopsUser): void |
||||||||
|
0 ignored issues
–
show
The parameter
$xoopsUser is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body. Loading history...
|
|||||||||
| 831 | { |
||||||||
| 832 | global $xoopsConfig; |
||||||||
| 833 | $newid = $user->getVar('uid'); |
||||||||
|
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
|
|||||||||
| 834 | $uname = $user->getVar('uname'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 835 | $email = $user->getVar('email'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 836 | |||||||||
| 837 | $tags = []; |
||||||||
| 838 | $tags['XOOPS_USER_NAME'] = $user->getVar('uname'); |
||||||||
| 839 | $tags['XOOPS_USER_EMAIL'] = $user->getVar('email'); |
||||||||
| 840 | $tags['XOOPS_USER_ID'] = $user->getVar('uname'); |
||||||||
| 841 | $tags['XOOPS_USER_PASSWORD'] = $password; |
||||||||
| 842 | |||||||||
| 843 | $email_tpl = $this->getEmailTpl('ticket', 'new_user_activation2', $this->module, $template_id); |
||||||||
| 844 | if ($email_tpl) { |
||||||||
| 845 | $sendTo = $this->getUserEmail($user->getVar('uid')); |
||||||||
| 846 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 847 | } |
||||||||
| 848 | } |
||||||||
| 849 | |||||||||
| 850 | /** |
||||||||
| 851 | * Event: new_response |
||||||||
| 852 | * Triggered after a response has been added to a ticket |
||||||||
| 853 | * @param Ticket|int $ticket Ticket containing response |
||||||||
| 854 | * @param Response $response Response that was added |
||||||||
| 855 | */ |
||||||||
| 856 | public function new_response($ticket, Response $response): void |
||||||||
| 857 | { |
||||||||
| 858 | // If response is from staff member, send message to ticket submitter |
||||||||
| 859 | // If response is from submitter, send message to owner, if no owner, send to department |
||||||||
| 860 | |||||||||
| 861 | global $xoopsUser, $xoopsConfig; |
||||||||
| 862 | $helper = Helper::getInstance(); |
||||||||
| 863 | |||||||||
| 864 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 865 | |||||||||
| 866 | if (!\is_object($ticket) && 0 === $ticket) { |
||||||||
| 867 | $ticketHandler = $this->helper->getHandler('Ticket'); |
||||||||
| 868 | $ticket = $ticketHandler->get($response->getVar('ticketid')); |
||||||||
| 869 | } |
||||||||
| 870 | |||||||||
| 871 | $b_email_ticket = false; |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 872 | $from = ''; |
||||||||
| 873 | |||||||||
| 874 | $tags = []; |
||||||||
| 875 | $tags['TICKET_ID'] = $ticket->getVar('id'); |
||||||||
| 876 | $tags['TICKET_URL'] = \XHELP_BASE_URL . '/ticket.php?id=' . $ticket->getVar('id'); |
||||||||
| 877 | $tags['TICKET_RESPONSE'] = ($response->getVar('message', 'n')); |
||||||||
| 878 | $tags['TICKET_SUBJECT'] = ($ticket->getVar('subject', 'n')); |
||||||||
| 879 | $tags['TICKET_TIMESPENT'] = $response->getVar('timeSpent'); |
||||||||
| 880 | $tags['TICKET_STATUS'] = Utility::getStatus($ticket->getVar('status')); |
||||||||
| 881 | $displayName = $helper->getConfig('xhelp_displayName'); // Determines if username or real name is displayed |
||||||||
| 882 | $tags['TICKET_RESPONDER'] = Utility::getUsername($xoopsUser->getVar('uid'), $displayName); |
||||||||
|
0 ignored issues
–
show
It seems like
$displayName can also be of type null; however, parameter $displayName of XoopsModules\Xhelp\Utility::getUsername() does only seem to accept integer, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 883 | $tags['TICKET_POSTED'] = $response->posted('m'); |
||||||||
| 884 | $tags['TICKET_SUPPORT_KEY'] = ''; |
||||||||
| 885 | $tags['TICKET_SUPPORT_EMAIL'] = $xoopsConfig['adminmail']; |
||||||||
| 886 | |||||||||
| 887 | if ($ticket->getVar('serverid') > 0) { |
||||||||
| 888 | $departmentMailBoxHandler = $this->helper->getHandler('DepartmentMailBox'); |
||||||||
| 889 | |||||||||
| 890 | $server = $departmentMailBoxHandler->get($ticket->getVar('serverid')); |
||||||||
| 891 | if ($server) { |
||||||||
| 892 | $from = $server->getVar('emailaddress'); |
||||||||
| 893 | $tags['TICKET_SUPPORT_KEY'] = '{' . $ticket->getVar('emailHash') . '}'; |
||||||||
| 894 | $tags['TICKET_SUPPORT_EMAIL'] = $from; |
||||||||
| 895 | } |
||||||||
| 896 | } |
||||||||
| 897 | $owner = $ticket->getVar('ownership'); |
||||||||
| 898 | if (0 == $owner) { |
||||||||
| 899 | $tags['TICKET_OWNERSHIP'] = \_XHELP_NO_OWNER; |
||||||||
| 900 | } else { |
||||||||
| 901 | $tags['TICKET_OWNERSHIP'] = Utility::getUsername($owner, $displayName); |
||||||||
| 902 | } |
||||||||
| 903 | $tags['TICKET_DEPARTMENT'] = ($departmentHandler->getNameById($ticket->getVar('department'))); |
||||||||
| 904 | |||||||||
| 905 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_NEWRESPONSE); |
||||||||
| 906 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 907 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
| 908 | |||||||||
| 909 | $sendTo = []; |
||||||||
| 910 | /** @var \XoopsMemberHandler $memberHandler */ |
||||||||
| 911 | $memberHandler = \xoops_getHandler('member'); |
||||||||
| 912 | $response_user = $memberHandler->getUser($response->getVar('uid')); |
||||||||
| 913 | $response_email = $response_user->getVar('email'); |
||||||||
| 914 | |||||||||
| 915 | $aUsers = $this->getSubscribedUsers($ticket->getVar('id')); |
||||||||
| 916 | |||||||||
| 917 | if (\in_array($response_email, $aUsers)) { // If response from a submitter, send to staff and other submitters |
||||||||
| 918 | if (\XHELP_NOTIF_STAFF_NONE != $staff_setting) { // Staff notification is enabled |
||||||||
| 919 | $email_tpl = $this->getEmailTpl('dept', 'new_response', $this->module, $template_id); |
||||||||
| 920 | if ($email_tpl) { // Send to staff members |
||||||||
| 921 | $sendTo = $this->getSubscribedStaff($ticket, $email_tpl['bit_value'], $settings, $response->getVar('uid')); |
||||||||
| 922 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 923 | } |
||||||||
| 924 | } |
||||||||
| 925 | unset($aUsers[$ticket->getVar('uid')]); // Remove response submitter from array |
||||||||
| 926 | $sendTo = $aUsers; // Get array of user emails to send |
||||||||
| 927 | } else { // If response from staff, send to submitters |
||||||||
| 928 | // Also send to staff members if no owner |
||||||||
| 929 | if (\XHELP_NOTIF_STAFF_NONE != $staff_setting) { // If notification is on |
||||||||
| 930 | $email_tpl = $this->getEmailTpl('dept', 'new_response', $this->module, $template_id); |
||||||||
| 931 | if ($email_tpl) { // Send to staff members |
||||||||
| 932 | if (0 == $ticket->getVar('ownership')) { |
||||||||
| 933 | $sendTo = $this->getSubscribedStaff($ticket, $email_tpl['bit_value'], $settings, $response->getVar('uid')); |
||||||||
| 934 | } |
||||||||
| 935 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
| 936 | } |
||||||||
| 937 | } |
||||||||
| 938 | $sendTo = $aUsers; |
||||||||
| 939 | } |
||||||||
| 940 | if (2 != $user_setting && 0 === $response->getVar('private')) { |
||||||||
| 941 | $email_tpl = $this->getEmailTpl('ticket', 'new_this_response', $this->module, $template_id); |
||||||||
| 942 | if ($email_tpl) { // Send to users |
||||||||
| 943 | $success = $this->sendEvents($email_tpl, $sendTo, $tags, $from); |
||||||||
| 944 | } |
||||||||
| 945 | } |
||||||||
| 946 | } |
||||||||
| 947 | |||||||||
| 948 | /** |
||||||||
| 949 | * Event: update_priority |
||||||||
| 950 | * Triggered after a ticket priority is modified |
||||||||
| 951 | * Also See: batch_priority |
||||||||
| 952 | * @param Ticket $ticket Ticket that was modified |
||||||||
| 953 | * @param int $oldpriority Previous ticket priority |
||||||||
| 954 | */ |
||||||||
| 955 | public function update_priority(Ticket $ticket, int $oldpriority): void |
||||||||
| 956 | { |
||||||||
| 957 | //notify staff department of change |
||||||||
| 958 | //notify submitter |
||||||||
| 959 | global $xoopsUser; |
||||||||
| 960 | |||||||||
| 961 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 962 | |||||||||
| 963 | $tags = []; |
||||||||
| 964 | $tags['TICKET_ID'] = $ticket->getVar('id'); |
||||||||
| 965 | $tags['TICKET_URL'] = \XHELP_BASE_URL . '/ticket.php?id=' . $ticket->getVar('id'); |
||||||||
| 966 | // Added by marcan to get the ticket's subject available in the mail template |
||||||||
| 967 | $tags['TICKET_SUBJECT'] = ($ticket->getVar('subject', 'n')); |
||||||||
| 968 | // End of addition by marcan |
||||||||
| 969 | $tags['TICKET_OLD_PRIORITY'] = Utility::getPriority($oldpriority); |
||||||||
| 970 | $tags['TICKET_PRIORITY'] = Utility::getPriority($ticket->getVar('priority')); |
||||||||
| 971 | $tags['TICKET_UPDATEDBY'] = $xoopsUser->getVar('uname'); |
||||||||
| 972 | $tags['TICKET_DEPARTMENT'] = ($departmentHandler->getNameById($ticket->getVar('department'))); |
||||||||
| 973 | |||||||||
| 974 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_EDITPRIORITY); |
||||||||
| 975 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 976 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 977 | |||||||||
| 978 | $email_tpl = $this->getEmailTpl('dept', 'changed_priority', $this->module, $template_id); |
||||||||
| 979 | if ($email_tpl) { // Notify staff dept |
||||||||
| 980 | $sendTo = $this->getSubscribedStaff($ticket, $email_tpl['bit_value'], $settings); |
||||||||
| 981 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 982 | } |
||||||||
| 983 | $email_tpl = $this->getEmailTpl('ticket', 'changed_this_priority', $this->module, $template_id); |
||||||||
| 984 | if ($email_tpl) { // Notify submitter |
||||||||
| 985 | $sendTo = $this->getSubscribedUsers($ticket->getVar('id')); |
||||||||
| 986 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
| 987 | } |
||||||||
| 988 | } |
||||||||
| 989 | |||||||||
| 990 | /** |
||||||||
| 991 | * Event: update_status |
||||||||
| 992 | * Triggered after a ticket status change |
||||||||
| 993 | * Also See: batch_status, close_ticket, reopen_ticket |
||||||||
| 994 | * @param Ticket $ticket The ticket that was modified |
||||||||
| 995 | * @param Status $oldstatus The previous ticket status |
||||||||
| 996 | * @param Status $newstatus The new ticket status |
||||||||
| 997 | */ |
||||||||
| 998 | public function update_status(Ticket $ticket, Status $oldstatus, Status $newstatus): void |
||||||||
| 999 | { |
||||||||
| 1000 | //notify staff department of change |
||||||||
| 1001 | //notify submitter |
||||||||
| 1002 | global $xoopsUser; |
||||||||
| 1003 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1004 | |||||||||
| 1005 | $tags = []; |
||||||||
| 1006 | $tags['TICKET_ID'] = $ticket->getVar('id'); |
||||||||
| 1007 | $tags['TICKET_URL'] = \XHELP_BASE_URL . '/ticket.php?id=' . $ticket->getVar('id'); |
||||||||
| 1008 | // Added by marcan to get the ticket's subject available in the mail template |
||||||||
| 1009 | $tags['TICKET_SUBJECT'] = ($ticket->getVar('subject', 'n')); |
||||||||
| 1010 | // End of addition by marcan |
||||||||
| 1011 | $tags['TICKET_OLD_STATUS'] = $oldstatus->getVar('description'); |
||||||||
| 1012 | $tags['TICKET_OLD_STATE'] = Utility::getState($oldstatus->getVar('state')); |
||||||||
| 1013 | $tags['TICKET_STATUS'] = $newstatus->getVar('description'); |
||||||||
| 1014 | $tags['TICKET_STATE'] = Utility::getState($newstatus->getVar('state')); |
||||||||
| 1015 | $tags['TICKET_UPDATEDBY'] = $xoopsUser->getVar('uname'); |
||||||||
| 1016 | $tags['TICKET_DEPARTMENT'] = ($departmentHandler->getNameById($ticket->getVar('department'))); |
||||||||
| 1017 | |||||||||
| 1018 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_EDITSTATUS); |
||||||||
| 1019 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1020 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1021 | |||||||||
| 1022 | $email_tpl = $this->getEmailTpl('dept', 'changed_status', $this->module, $template_id); |
||||||||
| 1023 | if ($email_tpl) { |
||||||||
| 1024 | $sendTo = $this->getSubscribedStaff($ticket, $email_tpl['bit_value'], $settings); |
||||||||
| 1025 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1026 | } |
||||||||
| 1027 | $email_tpl = $this->getEmailTpl('ticket', 'changed_this_status', $this->module, $template_id); |
||||||||
| 1028 | if ($email_tpl) { |
||||||||
| 1029 | //$sendTo = $this->getEmail($ticket->getVar('uid')); |
||||||||
| 1030 | $sendTo = $this->getSubscribedUsers($ticket->getVar('id')); |
||||||||
| 1031 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
| 1032 | } |
||||||||
| 1033 | } |
||||||||
| 1034 | |||||||||
| 1035 | /** |
||||||||
| 1036 | * Event: update_owner |
||||||||
| 1037 | * Triggered after ticket ownership change (Individual) |
||||||||
| 1038 | * Also See: batch_owner |
||||||||
| 1039 | * @param Ticket $ticket Ticket that was changed |
||||||||
| 1040 | * @param int|string|null $oldOwner UID of previous owner |
||||||||
| 1041 | * @param int $newOwner UID of new owner |
||||||||
| 1042 | */ |
||||||||
| 1043 | public function update_owner(Ticket $ticket, $oldOwner, int $newOwner): void |
||||||||
|
0 ignored issues
–
show
The parameter
$newOwner is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body. Loading history...
|
|||||||||
| 1044 | { |
||||||||
| 1045 | //notify old owner, if assigned |
||||||||
| 1046 | //notify new owner |
||||||||
| 1047 | //notify submitter |
||||||||
| 1048 | global $xoopsUser; |
||||||||
| 1049 | $helper = Helper::getInstance(); |
||||||||
| 1050 | |||||||||
| 1051 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1052 | |||||||||
| 1053 | $displayName = $helper->getConfig('xhelp_displayName'); // Determines if username or real name is displayed |
||||||||
| 1054 | |||||||||
| 1055 | $tags = []; |
||||||||
| 1056 | $tags['TICKET_ID'] = $ticket->getVar('id'); |
||||||||
| 1057 | $tags['TICKET_URL'] = \XHELP_BASE_URL . '/ticket.php?id=' . $ticket->getVar('id'); |
||||||||
| 1058 | $tags['TICKET_SUBJECT'] = ($ticket->getVar('subject', 'n')); |
||||||||
| 1059 | $tags['TICKET_DESCRIPTION'] = ($ticket->getVar('description', 'n')); |
||||||||
| 1060 | $tags['TICKET_OWNER'] = Utility::getUsername($ticket->getVar('ownership'), $displayName); |
||||||||
|
0 ignored issues
–
show
It seems like
$displayName can also be of type null; however, parameter $displayName of XoopsModules\Xhelp\Utility::getUsername() does only seem to accept integer, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1061 | $tags['SUBMITTED_OWNER'] = $xoopsUser->getVar('uname'); |
||||||||
| 1062 | $tags['TICKET_STATUS'] = Utility::getStatus($ticket->getVar('status')); |
||||||||
|
0 ignored issues
–
show
It seems like
$ticket->getVar('status') can also be of type array and array; however, parameter $status of XoopsModules\Xhelp\Utility::getStatus() does only seem to accept integer|string, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1063 | $tags['TICKET_PRIORITY'] = Utility::getPriority($ticket->getVar('priority')); |
||||||||
| 1064 | $tags['TICKET_DEPARTMENT'] = ($departmentHandler->getNameById($ticket->getVar('department'))); |
||||||||
| 1065 | |||||||||
| 1066 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_EDITOWNER); |
||||||||
| 1067 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 1068 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
| 1069 | $staff_options = $settings->getVar('staff_options') ?? ''; |
||||||||
| 1070 | |||||||||
| 1071 | $sendTo = []; |
||||||||
| 1072 | if (\XHELP_NOTIF_STAFF_OWNER == $staff_setting) { |
||||||||
| 1073 | if (!empty($oldOwner) |
||||||||
| 1074 | && \_XHELP_NO_OWNER != $oldOwner) { // If there was an owner |
||||||||
| 1075 | $email_tpl = $this->getEmailTpl('dept', 'new_owner', $this->module, $template_id); |
||||||||
| 1076 | if ($email_tpl) { // Send them an email |
||||||||
| 1077 | if ($this->isSubscribed($oldOwner, $email_tpl['bit_value'])) { // Check if the owner is subscribed |
||||||||
|
0 ignored issues
–
show
It seems like
$oldOwner can also be of type string; however, parameter $user of XoopsModules\Xhelp\Notif...Service::isSubscribed() does only seem to accept XoopsModules\Xhelp\Staff|integer, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1078 | $sendTo = $this->getStaffEmail($oldOwner, $ticket->getVar('department'), $staff_options); |
||||||||
|
0 ignored issues
–
show
It seems like
$ticket->getVar('department') can also be of type array and array; however, parameter $dept of XoopsModules\Xhelp\Notif...ervice::getStaffEmail() does only seem to accept integer|null|string, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
It seems like
$oldOwner can also be of type string; however, parameter $uid of XoopsModules\Xhelp\Notif...ervice::getStaffEmail() does only seem to accept integer, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
It seems like
$staff_options can also be of type string; however, parameter $staff_options of XoopsModules\Xhelp\Notif...ervice::getStaffEmail() does only seem to accept array|null, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1079 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1080 | } |
||||||||
| 1081 | } |
||||||||
| 1082 | } |
||||||||
| 1083 | if (0 != $ticket->getVar('ownership') |
||||||||
| 1084 | && $ticket->getVar('ownership') != $xoopsUser->getVar('uid')) { // If owner is not current user |
||||||||
| 1085 | $email_tpl = $this->getEmailTpl('dept', 'new_owner', $this->module, $template_id); |
||||||||
| 1086 | if ($email_tpl) { // Send new owner email |
||||||||
| 1087 | if ($this->isSubscribed($ticket->getVar('ownership'), $email_tpl['bit_value'])) { // Check if the owner is subscribed |
||||||||
| 1088 | $sendTo = $this->getStaffEmail($ticket->getVar('ownership'), $ticket->getVar('department'), $staff_options); |
||||||||
| 1089 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
| 1090 | } |
||||||||
| 1091 | } |
||||||||
| 1092 | } |
||||||||
| 1093 | } elseif (\XHELP_NOTIF_STAFF_DEPT == $staff_setting) { // Notify entire department |
||||||||
| 1094 | $email_tpl = $this->getEmailTpl('dept', 'new_owner', $this->module, $template_id); |
||||||||
| 1095 | if ($email_tpl) { |
||||||||
| 1096 | $sendTo = $this->getSubscribedStaff($ticket, $email_tpl['bit_value'], $settings); |
||||||||
| 1097 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
| 1098 | } |
||||||||
| 1099 | } |
||||||||
| 1100 | |||||||||
| 1101 | if (\XHELP_NOTIF_USER_NO != $user_setting) { |
||||||||
| 1102 | $email_tpl = $this->getEmailTpl('ticket', 'new_this_owner', $this->module, $template_id); |
||||||||
| 1103 | if ($email_tpl) { // Send to ticket submitter |
||||||||
| 1104 | $sendTo = $this->getSubscribedUsers($ticket->getVar('id')); |
||||||||
| 1105 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
| 1106 | } |
||||||||
| 1107 | } |
||||||||
| 1108 | } |
||||||||
| 1109 | |||||||||
| 1110 | /** |
||||||||
| 1111 | * Event: close_ticket |
||||||||
| 1112 | * Triggered after a ticket's status change from a status |
||||||||
| 1113 | * with a state of XHELP_STATE_UNRESOLVED to a status |
||||||||
| 1114 | * with a state of XHELP_STATE_RESOLVED |
||||||||
| 1115 | * Also See: update_status, reopen_ticket |
||||||||
| 1116 | * @param Ticket $ticket The ticket that was closed |
||||||||
| 1117 | */ |
||||||||
| 1118 | public function close_ticket(Ticket $ticket): void |
||||||||
| 1119 | { |
||||||||
| 1120 | global $xoopsUser; |
||||||||
| 1121 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1122 | |||||||||
| 1123 | $tags = []; |
||||||||
| 1124 | $tags['TICKET_ID'] = $ticket->getVar('id'); |
||||||||
| 1125 | $tags['TICKET_SUBJECT'] = ($ticket->getVar('subject', 'n')); |
||||||||
| 1126 | $tags['TICKET_DESCRIPTION'] = ($ticket->getVar('description', 'n')); |
||||||||
| 1127 | $tags['TICKET_STATUS'] = Utility::getStatus($ticket->getVar('status')); |
||||||||
|
0 ignored issues
–
show
It seems like
$ticket->getVar('status') can also be of type array and array; however, parameter $status of XoopsModules\Xhelp\Utility::getStatus() does only seem to accept integer|string, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1128 | $tags['TICKET_CLOSEDBY'] = $xoopsUser->getVar('uname'); |
||||||||
| 1129 | $tags['TICKET_URL'] = \XHELP_BASE_URL . '/ticket.php?id=' . $ticket->getVar('id'); |
||||||||
| 1130 | $tags['TICKET_DEPARTMENT'] = ($departmentHandler->getNameById($ticket->getVar('department'))); |
||||||||
| 1131 | |||||||||
| 1132 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_CLOSETICKET); |
||||||||
| 1133 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 1134 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
| 1135 | |||||||||
| 1136 | $sendTo = []; |
||||||||
| 1137 | if (\XHELP_NOTIF_STAFF_NONE != $staff_setting) { |
||||||||
| 1138 | $email_tpl = $this->getEmailTpl('dept', 'close_ticket', $this->module, $template_id); |
||||||||
| 1139 | if ($email_tpl) { // Send to department, not to staff member |
||||||||
| 1140 | $sendTo = $this->getSubscribedStaff($ticket, $email_tpl['bit_value'], $settings); |
||||||||
| 1141 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1142 | } |
||||||||
| 1143 | } |
||||||||
| 1144 | |||||||||
| 1145 | if (\XHELP_NOTIF_USER_NO != $user_setting) { |
||||||||
| 1146 | if ($xoopsUser->getVar('uid') != $ticket->getVar('uid')) { // If not closed by submitter |
||||||||
| 1147 | $email_tpl = $this->getEmailTpl('ticket', 'close_this_ticket', $this->module, $template_id); |
||||||||
| 1148 | if ($email_tpl) { // Send to submitter |
||||||||
| 1149 | //$sendTo = $this->getEmail($ticket->getVar('uid')); |
||||||||
| 1150 | $sendTo = $this->getSubscribedUsers($ticket->getVar('id')); |
||||||||
| 1151 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
| 1152 | } |
||||||||
| 1153 | } |
||||||||
| 1154 | } |
||||||||
| 1155 | } |
||||||||
| 1156 | |||||||||
| 1157 | /** |
||||||||
| 1158 | * Event: delete_ticket |
||||||||
| 1159 | * Triggered after a ticket is deleted |
||||||||
| 1160 | * @param Ticket $ticket Ticket that was deleted |
||||||||
| 1161 | */ |
||||||||
| 1162 | public function delete_ticket(Ticket $ticket): void |
||||||||
| 1163 | { |
||||||||
| 1164 | //notify staff department |
||||||||
| 1165 | //notify submitter |
||||||||
| 1166 | global $xoopsUser, $xoopsModule; |
||||||||
| 1167 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1168 | |||||||||
| 1169 | $tags = []; |
||||||||
| 1170 | $tags['TICKET_ID'] = $ticket->getVar('id'); |
||||||||
| 1171 | $tags['TICKET_SUBJECT'] = ($ticket->getVar('subject', 'n')); |
||||||||
| 1172 | $tags['TICKET_DESCRIPTION'] = ($ticket->getVar('description', 'n')); |
||||||||
| 1173 | $tags['TICKET_PRIORITY'] = Utility::getPriority($ticket->getVar('priority')); |
||||||||
| 1174 | $tags['TICKET_STATUS'] = Utility::getStatus($ticket->getVar('status')); |
||||||||
|
0 ignored issues
–
show
It seems like
$ticket->getVar('status') can also be of type array and array; however, parameter $status of XoopsModules\Xhelp\Utility::getStatus() does only seem to accept integer|string, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1175 | $tags['TICKET_POSTED'] = $ticket->posted(); |
||||||||
| 1176 | $tags['TICKET_DELETEDBY'] = $xoopsUser->getVar('uname'); |
||||||||
| 1177 | $tags['TICKET_DEPARTMENT'] = ($departmentHandler->getNameById($ticket->getVar('department'))); |
||||||||
| 1178 | |||||||||
| 1179 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_DELTICKET); |
||||||||
| 1180 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 1181 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
| 1182 | |||||||||
| 1183 | if (\XHELP_NOTIF_STAFF_NONE != $staff_setting) { |
||||||||
| 1184 | $email_tpl = $this->getEmailTpl('dept', 'removed_ticket', $this->module, $template_id); |
||||||||
| 1185 | if ($email_tpl) { // Send to dept staff |
||||||||
| 1186 | $sendTo = $this->getSubscribedStaff($ticket, $email_tpl['bit_value'], $settings); |
||||||||
| 1187 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1188 | } |
||||||||
| 1189 | } |
||||||||
| 1190 | |||||||||
| 1191 | if (\XHELP_NOTIF_USER_NO != $user_setting) { |
||||||||
| 1192 | $status = $this->statusHandler->get($ticket->getVar('status')); |
||||||||
| 1193 | if (2 != $status->getVar('state')) { |
||||||||
| 1194 | $email_tpl = $this->getEmailTpl('ticket', 'removed_this_ticket', $this->module, $template_id); |
||||||||
| 1195 | if ($email_tpl) { // Send to submitter |
||||||||
| 1196 | //$sendTo = $this->getEmail($ticket->getVar('uid')); |
||||||||
| 1197 | $sendTo = $this->getSubscribedUsers($ticket->getVar('id')); |
||||||||
| 1198 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
| 1199 | } |
||||||||
| 1200 | } |
||||||||
| 1201 | } |
||||||||
| 1202 | } |
||||||||
| 1203 | |||||||||
| 1204 | /** |
||||||||
| 1205 | * Event: edit_ticket |
||||||||
| 1206 | * Triggered after a ticket is modified |
||||||||
| 1207 | * @param array|Ticket $oldTicket Ticket information before modifications |
||||||||
| 1208 | * @param Ticket $ticketInfo Ticket information after modifications |
||||||||
| 1209 | */ |
||||||||
| 1210 | public function edit_ticket($oldTicket, Ticket $ticketInfo): void |
||||||||
| 1211 | { |
||||||||
| 1212 | //notify staff department of change |
||||||||
| 1213 | //notify submitter |
||||||||
| 1214 | global $xoopsUser; |
||||||||
| 1215 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1216 | |||||||||
| 1217 | $tags = []; |
||||||||
| 1218 | $tags['TICKET_URL'] = \XHELP_BASE_URL . '/ticket.php?id=' . $ticketInfo->getVar('id'); |
||||||||
| 1219 | $tags['TICKET_OLD_SUBJECT'] = ($oldTicket['subject']); |
||||||||
| 1220 | $tags['TICKET_OLD_DESCRIPTION'] = ($oldTicket['description']); |
||||||||
| 1221 | $tags['TICKET_OLD_PRIORITY'] = Utility::getPriority($oldTicket['priority']); |
||||||||
| 1222 | $tags['TICKET_OLD_STATUS'] = $oldTicket['status']; |
||||||||
| 1223 | $tags['TICKET_OLD_DEPARTMENT'] = $oldTicket['department']; |
||||||||
| 1224 | $tags['TICKET_OLD_DEPTID'] = $oldTicket['department_id']; |
||||||||
| 1225 | |||||||||
| 1226 | $tags['TICKET_ID'] = $ticketInfo->getVar('id'); |
||||||||
| 1227 | $tags['TICKET_SUBJECT'] = ($ticketInfo->getVar('subject', 'n')); |
||||||||
| 1228 | $tags['TICKET_DESCRIPTION'] = ($ticketInfo->getVar('description', 'n')); |
||||||||
| 1229 | $tags['TICKET_PRIORITY'] = Utility::getPriority($ticketInfo->getVar('priority')); |
||||||||
| 1230 | $tags['TICKET_STATUS'] = Utility::getStatus($ticketInfo->getVar('status')); |
||||||||
|
0 ignored issues
–
show
It seems like
$ticketInfo->getVar('status') can also be of type array and array; however, parameter $status of XoopsModules\Xhelp\Utility::getStatus() does only seem to accept integer|string, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1231 | $tags['TICKET_MODIFIED'] = $xoopsUser->getVar('uname'); |
||||||||
| 1232 | if ($tags['TICKET_OLD_DEPTID'] != $ticketInfo->getVar('department')) { |
||||||||
| 1233 | $department = $departmentHandler->get($ticketInfo->getVar('department')); |
||||||||
| 1234 | $tags['TICKET_DEPARTMENT'] = $department->getVar('department'); |
||||||||
| 1235 | } else { |
||||||||
| 1236 | $tags['TICKET_DEPARTMENT'] = $tags['TICKET_OLD_DEPARTMENT']; |
||||||||
| 1237 | } |
||||||||
| 1238 | |||||||||
| 1239 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_EDITTICKET); |
||||||||
| 1240 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 1241 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
| 1242 | |||||||||
| 1243 | if (\XHELP_NOTIF_STAFF_NONE != $staff_setting) { |
||||||||
| 1244 | $email_tpl = $this->getEmailTpl('dept', 'modified_ticket', $this->module, $template_id); |
||||||||
| 1245 | if ($email_tpl) { // Send to dept staff |
||||||||
| 1246 | $sendTo = $this->getSubscribedStaff($ticketInfo, $email_tpl['bit_value'], $settings); |
||||||||
| 1247 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1248 | } |
||||||||
| 1249 | } |
||||||||
| 1250 | if (\XHELP_NOTIF_USER_NO != $user_setting) { |
||||||||
| 1251 | $email_tpl = $this->getEmailTpl('ticket', 'modified_this_ticket', $this->module, $template_id); |
||||||||
| 1252 | if ($email_tpl) { // Send to ticket submitter |
||||||||
| 1253 | $sendTo = $this->getSubscribedUsers($ticketInfo->getVar('id')); |
||||||||
| 1254 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
| 1255 | } |
||||||||
| 1256 | } |
||||||||
| 1257 | } |
||||||||
| 1258 | |||||||||
| 1259 | /** |
||||||||
| 1260 | * Event: edit_response |
||||||||
| 1261 | * Triggered after a response has been modified |
||||||||
| 1262 | * Also See: new_response |
||||||||
| 1263 | * @param Ticket $ticket |
||||||||
| 1264 | * @param Response $response Modified response |
||||||||
| 1265 | * @param Ticket $oldticket Ticket before modifications |
||||||||
| 1266 | * @param Response $oldresponse Response modifications |
||||||||
| 1267 | * @internal param Ticket $nticket Ticket after modifications |
||||||||
| 1268 | */ |
||||||||
| 1269 | public function edit_response(Ticket $ticket, Response $response, Ticket $oldticket, Response $oldresponse): void |
||||||||
| 1270 | { |
||||||||
| 1271 | //if not modified by response submitter, notify response submitter |
||||||||
| 1272 | //notify ticket submitter |
||||||||
| 1273 | global $xoopsUser; |
||||||||
| 1274 | $helper = Helper::getInstance(); |
||||||||
| 1275 | |||||||||
| 1276 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1277 | $displayName = $helper->getConfig('xhelp_displayName'); // Determines if username or real name is displayed |
||||||||
| 1278 | |||||||||
| 1279 | $tags = []; |
||||||||
| 1280 | $tags['TICKET_URL'] = \XHELP_BASE_URL . '/ticket.php?id=' . $ticket->getVar('id'); |
||||||||
| 1281 | $tags['TICKET_OLD_RESPONSE'] = ($oldresponse->getVar('message', 'n')); |
||||||||
| 1282 | $tags['TICKET_OLD_TIMESPENT'] = $oldresponse->getVar('timeSpent'); |
||||||||
| 1283 | $tags['TICKET_OLD_STATUS'] = Utility::getStatus($oldticket->getVar('status')); |
||||||||
|
0 ignored issues
–
show
It seems like
$oldticket->getVar('status') can also be of type array and array; however, parameter $status of XoopsModules\Xhelp\Utility::getStatus() does only seem to accept integer|string, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1284 | $tags['TICKET_OLD_RESPONDER'] = Utility::getUsername($oldresponse->getVar('uid'), $displayName); |
||||||||
|
0 ignored issues
–
show
It seems like
$displayName can also be of type null; however, parameter $displayName of XoopsModules\Xhelp\Utility::getUsername() does only seem to accept integer, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1285 | $owner = $oldticket->getVar('ownership'); |
||||||||
| 1286 | $tags['TICKET_OLD_OWNERSHIP'] = ($owner = 0 ? \_XHELP_NO_OWNER : Utility::getUsername($owner, $displayName)); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1287 | $tags['TICKET_ID'] = $ticket->getVar('id'); |
||||||||
| 1288 | $tags['RESPONSE_ID'] = $response->getVar('id'); |
||||||||
| 1289 | $tags['TICKET_RESPONSE'] = ($response->getVar('message', 'n')); |
||||||||
| 1290 | $tags['TICKET_TIMESPENT'] = $response->getVar('timeSpent'); |
||||||||
| 1291 | $tags['TICKET_STATUS'] = Utility::getStatus($ticket->getVar('status')); |
||||||||
| 1292 | $tags['TICKET_RESPONDER'] = $xoopsUser->getVar('uname'); |
||||||||
| 1293 | $tags['TICKET_POSTED'] = $response->posted(); |
||||||||
| 1294 | $owner = $ticket->getVar('ownership'); |
||||||||
| 1295 | $tags['TICKET_OWNERSHIP'] = ($owner = 0 ? \_XHELP_NO_OWNER : Utility::getUsername($owner, $displayName)); |
||||||||
| 1296 | $tags['TICKET_DEPARTMENT'] = ($departmentHandler->getNameById($ticket->getVar('department'))); |
||||||||
| 1297 | |||||||||
| 1298 | // Added by marcan to get the ticket's subject available in the mail template |
||||||||
| 1299 | $tags['TICKET_SUBJECT'] = ($ticket->getVar('subject', 'n')); |
||||||||
| 1300 | // End of addition by marcan |
||||||||
| 1301 | |||||||||
| 1302 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_EDITRESPONSE); |
||||||||
| 1303 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 1304 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
| 1305 | |||||||||
| 1306 | if (\XHELP_NOTIF_STAFF_NONE != $staff_setting) { |
||||||||
| 1307 | $email_tpl = $this->getEmailTpl('dept', 'modified_response', $this->module, $template_id); |
||||||||
| 1308 | if ($email_tpl) { // Notify dept staff |
||||||||
| 1309 | $sendTo = $this->getSubscribedStaff($ticket, $email_tpl['bit_value'], $settings, $response->getVar('uid')); |
||||||||
| 1310 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1311 | } |
||||||||
| 1312 | } |
||||||||
| 1313 | |||||||||
| 1314 | if (\XHELP_NOTIF_USER_NO != $user_setting) { |
||||||||
| 1315 | if (0 == $response->getVar('private')) { // Make sure if response is private, don't sent to user |
||||||||
| 1316 | $email_tpl = $this->getEmailTpl('ticket', 'modified_this_response', $this->module, $template_id); |
||||||||
| 1317 | if ($email_tpl) { // Notify ticket submitter |
||||||||
| 1318 | $sendTo = $this->getSubscribedUsers($ticket->getVar('id')); |
||||||||
| 1319 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
| 1320 | } |
||||||||
| 1321 | } |
||||||||
| 1322 | } |
||||||||
| 1323 | } |
||||||||
| 1324 | |||||||||
| 1325 | /** |
||||||||
| 1326 | * Event: batch_dept |
||||||||
| 1327 | * Triggered after a batch ticket department change |
||||||||
| 1328 | * @param array $oldTickets The Ticket objects that were modified |
||||||||
| 1329 | * @param int $dept The new department for the tickets |
||||||||
| 1330 | * @return bool |
||||||||
| 1331 | */ |
||||||||
| 1332 | public function batch_dept(array $oldTickets, int $dept): bool |
||||||||
| 1333 | { |
||||||||
| 1334 | global $xoopsUser; |
||||||||
| 1335 | |||||||||
| 1336 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1337 | $sDept = $departmentHandler->getNameById($dept); |
||||||||
| 1338 | |||||||||
| 1339 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_EDITTICKET); |
||||||||
| 1340 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 1341 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
| 1342 | |||||||||
| 1343 | if (\XHELP_NOTIF_STAFF_NONE != $staff_setting) { |
||||||||
| 1344 | $dept_email_tpl = $this->getEmailTpl('dept', 'modified_ticket', $this->module, $template_id); |
||||||||
| 1345 | if ($dept_email_tpl) { // Send to dept staff |
||||||||
| 1346 | $deptEmails = $this->getSubscribedStaff($dept, $dept_email_tpl['bit_value'], $settings, $xoopsUser->getVar('uid')); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1347 | } |
||||||||
| 1348 | } else { |
||||||||
| 1349 | $dept_email_tpl = false; |
||||||||
| 1350 | } |
||||||||
| 1351 | |||||||||
| 1352 | $user_email_tpl = false; |
||||||||
| 1353 | if (\XHELP_NOTIF_USER_NO != $user_setting) { |
||||||||
| 1354 | $user_email_tpl = $this->getEmailTpl('ticket', 'modified_this_ticket', $this->module, $template_id); |
||||||||
| 1355 | } |
||||||||
| 1356 | |||||||||
| 1357 | foreach ($oldTickets as $oldTicket) { |
||||||||
| 1358 | $tags = []; |
||||||||
| 1359 | $tags['TICKET_OLD_SUBJECT'] = ($oldTicket->getVar('subject', 'n')); |
||||||||
| 1360 | $tags['TICKET_OLD_DESCRIPTION'] = ($oldTicket->getVar('description', 'n')); |
||||||||
| 1361 | $tags['TICKET_OLD_PRIORITY'] = Utility::getPriority($oldTicket->getVar('priority')); |
||||||||
| 1362 | $tags['TICKET_OLD_STATUS'] = Utility::getStatus($oldTicket->getVar('status')); |
||||||||
| 1363 | $tags['TICKET_OLD_DEPARTMENT'] = $departmentHandler->getNameById($oldTicket->getVar('department')); |
||||||||
| 1364 | $tags['TICKET_OLD_DEPTID'] = $oldTicket->getVar('department'); |
||||||||
| 1365 | |||||||||
| 1366 | $tags['TICKET_ID'] = $oldTicket->getVar('id'); |
||||||||
| 1367 | $tags['TICKET_SUBJECT'] = $tags['TICKET_OLD_SUBJECT']; |
||||||||
| 1368 | $tags['TICKET_DESCRIPTION'] = $tags['TICKET_OLD_DESCRIPTION']; |
||||||||
| 1369 | $tags['TICKET_PRIORITY'] = $tags['TICKET_OLD_PRIORITY']; |
||||||||
| 1370 | $tags['TICKET_STATUS'] = $tags['TICKET_OLD_STATUS']; |
||||||||
| 1371 | $tags['TICKET_MODIFIED'] = $xoopsUser->getVar('uname'); |
||||||||
| 1372 | $tags['TICKET_DEPARTMENT'] = $sDept; |
||||||||
| 1373 | $tags['TICKET_URL'] = \XHELP_BASE_URL . '/ticket.php?id=' . $oldTicket->getVar('id'); |
||||||||
| 1374 | |||||||||
| 1375 | if ($dept_email_tpl) { |
||||||||
| 1376 | $deptEmails = $this->getSubscribedStaff($oldTicket, $dept_email_tpl['bit_value'], $settings, $xoopsUser->getVar('uid')); |
||||||||
| 1377 | $success = $this->sendEvents($dept_email_tpl, $deptEmails, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$dept_email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1378 | } |
||||||||
| 1379 | if ($user_email_tpl) { |
||||||||
| 1380 | //$sendTo = $this->getEmail($oldTicket->getVar('uid')); |
||||||||
| 1381 | $sendTo = $this->getSubscribedUsers($oldTicket->getVar('id')); |
||||||||
| 1382 | $success = $this->sendEvents($user_email_tpl, $sendTo, $tags); |
||||||||
| 1383 | } |
||||||||
| 1384 | } |
||||||||
| 1385 | |||||||||
| 1386 | return true; |
||||||||
| 1387 | } |
||||||||
| 1388 | |||||||||
| 1389 | /** |
||||||||
| 1390 | * Event: batch_priority |
||||||||
| 1391 | * Triggered after a batch ticket priority change |
||||||||
| 1392 | * @param array $tickets The Ticket objects that were modified |
||||||||
| 1393 | * @param int $priority The new ticket priority |
||||||||
| 1394 | */ |
||||||||
| 1395 | public function batch_priority(array $tickets, int $priority): void |
||||||||
|
0 ignored issues
–
show
The parameter
$priority is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body. Loading history...
The parameter
$tickets is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body. Loading history...
|
|||||||||
| 1396 | { |
||||||||
| 1397 | global $xoopsUser; |
||||||||
| 1398 | |||||||||
| 1399 | [$tickets, $priority] = $args; |
||||||||
|
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
|
|||||||||
| 1400 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1401 | |||||||||
| 1402 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_EDITPRIORITY); |
||||||||
| 1403 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 1404 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
| 1405 | |||||||||
| 1406 | if (\XHELP_NOTIF_STAFF_NONE != $staff_setting) { |
||||||||
| 1407 | $dept_email_tpl = $this->getEmailTpl('dept', 'changed_priority', $this->module, $template_id); |
||||||||
| 1408 | } else { |
||||||||
| 1409 | $dept_email_tpl = false; |
||||||||
| 1410 | } |
||||||||
| 1411 | if (\XHELP_NOTIF_USER_NO != $user_setting) { |
||||||||
| 1412 | $user_email_tpl = $this->getEmailTpl('ticket', 'changed_this_priority', $this->module, $template_id); |
||||||||
| 1413 | } else { |
||||||||
| 1414 | $user_email_tpl = false; |
||||||||
| 1415 | } |
||||||||
| 1416 | $uname = $xoopsUser->getVar('uname'); |
||||||||
| 1417 | $uid = $xoopsUser->getVar('uid'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1418 | $priority = Utility::getPriority($priority); |
||||||||
| 1419 | |||||||||
| 1420 | foreach ($tickets as $ticket) { |
||||||||
| 1421 | $tags = []; |
||||||||
| 1422 | $tags['TICKET_ID'] = $ticket->getVar('id'); |
||||||||
| 1423 | $tags['TICKET_OLD_PRIORITY'] = Utility::getPriority($ticket->getVar('priority')); |
||||||||
| 1424 | $tags['TICKET_PRIORITY'] = $priority; |
||||||||
| 1425 | $tags['TICKET_UPDATEDBY'] = $uname; |
||||||||
| 1426 | $tags['TICKET_URL'] = \XHELP_BASE_URL . '/ticket.php?id=' . $ticket->getVar('id'); |
||||||||
| 1427 | // Added by marcan to get the ticket's subject available in the mail template |
||||||||
| 1428 | $tags['TICKET_SUBJECT'] = ($ticket->getVar('subject', 'n')); |
||||||||
| 1429 | // End of addition by marcan |
||||||||
| 1430 | $tags['TICKET_DEPARTMENT'] = ($departmentHandler->getNameById($ticket->getVar('department'))); |
||||||||
| 1431 | |||||||||
| 1432 | if ($dept_email_tpl) { |
||||||||
| 1433 | $sendTo = $this->getSubscribedStaff($ticket, $dept_email_tpl['bit_value'], $settings); |
||||||||
| 1434 | $success = $this->sendEvents($dept_email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$dept_email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1435 | } |
||||||||
| 1436 | |||||||||
| 1437 | if ($user_email_tpl) { |
||||||||
| 1438 | //$sendTo = $this->getEmail($ticket->getVar('uid')); |
||||||||
| 1439 | $sendTo = $this->getSubscribedUsers($ticket->getVar('id')); |
||||||||
| 1440 | $success = $this->sendEvents($user_email_tpl, $sendTo, $tags); |
||||||||
| 1441 | } |
||||||||
| 1442 | unset($tags); |
||||||||
| 1443 | } |
||||||||
| 1444 | } |
||||||||
| 1445 | |||||||||
| 1446 | /** |
||||||||
| 1447 | * Event: batch_owner |
||||||||
| 1448 | * Triggered after a batch ticket ownership change |
||||||||
| 1449 | * @param array $tickets The Ticket objects that were modified |
||||||||
| 1450 | * @param int $owner The XOOPS UID of the new owner |
||||||||
| 1451 | * @return bool |
||||||||
| 1452 | */ |
||||||||
| 1453 | public function batch_owner(array $tickets, int $owner): bool |
||||||||
| 1454 | { |
||||||||
| 1455 | //notify old owner, if assigned |
||||||||
| 1456 | //notify new owner |
||||||||
| 1457 | //notify submitter |
||||||||
| 1458 | global $xoopsUser; |
||||||||
| 1459 | $helper = Helper::getInstance(); |
||||||||
| 1460 | |||||||||
| 1461 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1462 | |||||||||
| 1463 | $displayName = $helper->getConfig('xhelp_displayName'); // Determines if username or real name is displayed |
||||||||
| 1464 | |||||||||
| 1465 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_EDITOWNER); |
||||||||
| 1466 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 1467 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
| 1468 | $staff_options = $settings->getVar('staff_options') ?? ''; |
||||||||
| 1469 | |||||||||
| 1470 | if (\XHELP_NOTIF_STAFF_NONE != $staff_setting) { |
||||||||
| 1471 | $dept_email_tpl = $this->getEmailTpl('dept', 'new_owner', $this->module, $template_id); |
||||||||
| 1472 | } else { |
||||||||
| 1473 | $dept_email_tpl = false; |
||||||||
| 1474 | } |
||||||||
| 1475 | if (\XHELP_NOTIF_USER_NO != $user_setting) { |
||||||||
| 1476 | $user_email_tpl = $this->getEmailTpl('ticket', 'new_this_owner', $this->module, $template_id); |
||||||||
| 1477 | } else { |
||||||||
| 1478 | $user_email_tpl = false; |
||||||||
| 1479 | } |
||||||||
| 1480 | $new_owner = Utility::getUsername($owner, $displayName); |
||||||||
|
0 ignored issues
–
show
It seems like
$displayName can also be of type null; however, parameter $displayName of XoopsModules\Xhelp\Utility::getUsername() does only seem to accept integer, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1481 | $submitted_by = $xoopsUser->getVar('uname'); |
||||||||
| 1482 | $uid = $xoopsUser->getVar('uid'); |
||||||||
| 1483 | |||||||||
| 1484 | foreach ($tickets as $ticket) { |
||||||||
| 1485 | $tags = []; |
||||||||
| 1486 | $tags['TICKET_ID'] = $ticket->getVar('id'); |
||||||||
| 1487 | $tags['TICKET_SUBJECT'] = ($ticket->getVar('subject', 'n')); |
||||||||
| 1488 | $tags['TICKET_DESCRIPTION'] = ($ticket->getVar('description', 'n')); |
||||||||
| 1489 | $tags['TICKET_OWNER'] = $new_owner; |
||||||||
| 1490 | $tags['SUBMITTED_OWNER'] = $submitted_by; |
||||||||
| 1491 | $tags['TICKET_STATUS'] = Utility::getStatus($ticket->getVar('status')); |
||||||||
| 1492 | $tags['TICKET_PRIORITY'] = Utility::getPriority($ticket->getVar('priority')); |
||||||||
| 1493 | $tags['TICKET_URL'] = \XHELP_BASE_URL . '/ticket.php?id=' . $ticket->getVar('id'); |
||||||||
| 1494 | $tags['TICKET_DEPARTMENT'] = ($departmentHandler->getNameById($ticket->getVar('department'))); |
||||||||
| 1495 | |||||||||
| 1496 | $sendTo = []; |
||||||||
| 1497 | if (0 != $ticket->getVar('ownership')) { // If there was an owner |
||||||||
| 1498 | if ($dept_email_tpl) { // Send them an email |
||||||||
| 1499 | if ($this->isSubscribed($ticket->getVar('ownership'), $dept_email_tpl['bit_value'])) { // Check if the owner is subscribed |
||||||||
| 1500 | $sendTo = $this->getStaffEmail($ticket->getVar('ownership'), $ticket->getVar('department'), $staff_options); |
||||||||
|
0 ignored issues
–
show
It seems like
$staff_options can also be of type string; however, parameter $staff_options of XoopsModules\Xhelp\Notif...ervice::getStaffEmail() does only seem to accept array|null, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1501 | $success = $this->sendEvents($dept_email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$dept_email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1502 | } |
||||||||
| 1503 | } |
||||||||
| 1504 | } |
||||||||
| 1505 | if ($owner != $uid) { |
||||||||
| 1506 | if ($dept_email_tpl) { // Send new owner email |
||||||||
| 1507 | if ($this->isSubscribed($owner, $dept_email_tpl['bit_value'])) { // Check if the owner is subscribed |
||||||||
| 1508 | $sendTo = $this->getStaffEmail($owner, $ticket->getVar('department'), $staff_options); |
||||||||
| 1509 | $success = $this->sendEvents($dept_email_tpl, $sendTo, $tags); |
||||||||
| 1510 | } |
||||||||
| 1511 | } |
||||||||
| 1512 | } |
||||||||
| 1513 | if ($user_email_tpl) { |
||||||||
| 1514 | //$sendTo = $this->getEmail($ticket->getVar('uid')); |
||||||||
| 1515 | $sendTo = $this->getSubscribedUsers($ticket->getVar('id')); |
||||||||
| 1516 | $success = $this->sendEvents($user_email_tpl, $sendTo, $tags); |
||||||||
| 1517 | } |
||||||||
| 1518 | } |
||||||||
| 1519 | |||||||||
| 1520 | return true; |
||||||||
| 1521 | } |
||||||||
| 1522 | |||||||||
| 1523 | /** |
||||||||
| 1524 | * Event: batch_status |
||||||||
| 1525 | * Triggered after a batch ticket status change |
||||||||
| 1526 | * @param array $tickets The Ticket objects that were modified |
||||||||
| 1527 | * @param int $newstatus The new ticket status |
||||||||
| 1528 | * @return bool |
||||||||
| 1529 | */ |
||||||||
| 1530 | public function batch_status(array $tickets, int $newstatus): bool |
||||||||
| 1531 | { |
||||||||
| 1532 | //notify staff department of change |
||||||||
| 1533 | //notify submitter |
||||||||
| 1534 | global $xoopsUser; |
||||||||
| 1535 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1536 | |||||||||
| 1537 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_EDITSTATUS); |
||||||||
| 1538 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 1539 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
| 1540 | |||||||||
| 1541 | if (\XHELP_NOTIF_STAFF_NONE != $staff_setting) { |
||||||||
| 1542 | $dept_email_tpl = $this->getEmailTpl('dept', 'changed_status', $this->module, $template_id); |
||||||||
| 1543 | } else { |
||||||||
| 1544 | $dept_email_tpl = false; |
||||||||
| 1545 | } |
||||||||
| 1546 | if (\XHELP_NOTIF_USER_NO != $user_setting) { |
||||||||
| 1547 | $user_email_tpl = $this->getEmailTpl('ticket', 'changed_this_status', $this->module, $template_id); |
||||||||
| 1548 | } else { |
||||||||
| 1549 | $user_email_tpl = false; |
||||||||
| 1550 | } |
||||||||
| 1551 | $sStatus = Utility::getStatus($newstatus); |
||||||||
| 1552 | $uname = $xoopsUser->getVar('uname'); |
||||||||
| 1553 | $uid = $xoopsUser->getVar('uid'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1554 | |||||||||
| 1555 | foreach ($tickets as $ticket) { |
||||||||
| 1556 | $tags = []; |
||||||||
| 1557 | $tags['TICKET_ID'] = $ticket->getVar('id'); |
||||||||
| 1558 | $tags['TICKET_URL'] = \XHELP_BASE_URL . '/ticket.php?id=' . $ticket->getVar('id'); |
||||||||
| 1559 | |||||||||
| 1560 | // Added by marcan to get the ticket's subject available in the mail template |
||||||||
| 1561 | $tags['TICKET_SUBJECT'] = ($ticket->getVar('subject', 'n')); |
||||||||
| 1562 | // End of addition by marcan |
||||||||
| 1563 | |||||||||
| 1564 | $tags['TICKET_OLD_STATUS'] = Utility::getStatus($ticket->getVar('status')); |
||||||||
| 1565 | $tags['TICKET_STATUS'] = $sStatus; |
||||||||
| 1566 | $tags['TICKET_UPDATEDBY'] = $uname; |
||||||||
| 1567 | $tags['TICKET_DEPARTMENT'] = ($departmentHandler->getNameById($ticket->getVar('department'))); |
||||||||
| 1568 | |||||||||
| 1569 | if ($dept_email_tpl) { |
||||||||
| 1570 | $sendTo = $this->getSubscribedStaff($ticket, $dept_email_tpl['bit_value'], $settings); |
||||||||
| 1571 | $success = $this->sendEvents($dept_email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$dept_email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1572 | } |
||||||||
| 1573 | if ($user_email_tpl) { |
||||||||
| 1574 | $sendTo = $this->getSubscribedUsers($ticket->getVar('id')); |
||||||||
| 1575 | $success = $this->sendEvents($user_email_tpl, $sendTo, $tags); |
||||||||
| 1576 | } |
||||||||
| 1577 | } |
||||||||
| 1578 | |||||||||
| 1579 | return true; |
||||||||
| 1580 | } |
||||||||
| 1581 | |||||||||
| 1582 | /** |
||||||||
| 1583 | * Event: batch_delete_ticket |
||||||||
| 1584 | * Triggered after a batch ticket deletion |
||||||||
| 1585 | * @param array $tickets The Ticket objects that were deleted |
||||||||
| 1586 | * @return bool |
||||||||
| 1587 | */ |
||||||||
| 1588 | public function batch_delete_ticket(array $tickets): bool |
||||||||
| 1589 | { |
||||||||
| 1590 | //notify staff department |
||||||||
| 1591 | //notify submitter (if ticket is not closed) |
||||||||
| 1592 | global $xoopsUser, $xoopsModule; |
||||||||
| 1593 | |||||||||
| 1594 | $uname = $xoopsUser->getVar('uname'); |
||||||||
| 1595 | $uid = $xoopsUser->getVar('uid'); |
||||||||
| 1596 | $staffHandler = $this->helper->getHandler('Staff'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1597 | $isStaff = $staffHandler->isStaff($uid); |
||||||||
| 1598 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
| 1599 | |||||||||
| 1600 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_DELTICKET); |
||||||||
| 1601 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 1602 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
| 1603 | |||||||||
| 1604 | if (\XHELP_NOTIF_STAFF_NONE != $staff_setting) { |
||||||||
| 1605 | $dept_email_tpl = $this->getEmailTpl('dept', 'removed_ticket', $this->module, $template_id); |
||||||||
| 1606 | } else { |
||||||||
| 1607 | $dept_email_tpl = false; |
||||||||
| 1608 | } |
||||||||
| 1609 | if (\XHELP_NOTIF_USER_NO != $user_setting) { |
||||||||
| 1610 | $user_email_tpl = $this->getEmailTpl('ticket', 'removed_this_ticket', $this->module, $template_id); |
||||||||
| 1611 | } else { |
||||||||
| 1612 | $user_email_tpl = false; |
||||||||
| 1613 | } |
||||||||
| 1614 | |||||||||
| 1615 | foreach ($tickets as $ticket) { |
||||||||
| 1616 | $tags = []; |
||||||||
| 1617 | $tags['TICKET_ID'] = $ticket->getVar('id'); |
||||||||
| 1618 | $tags['TICKET_SUBJECT'] = ($ticket->getVar('subject', 'n')); |
||||||||
| 1619 | $tags['TICKET_DESCRIPTION'] = ($ticket->getVar('description', 'n')); |
||||||||
| 1620 | $tags['TICKET_PRIORITY'] = Utility::getPriority($ticket->getVar('priority')); |
||||||||
| 1621 | $tags['TICKET_STATUS'] = Utility::getStatus($ticket->getVar('status')); |
||||||||
| 1622 | $tags['TICKET_POSTED'] = $ticket->posted(); |
||||||||
| 1623 | $tags['TICKET_DELETEDBY'] = $uname; |
||||||||
| 1624 | $tags['TICKET_DEPARTMENT'] = ($departmentHandler->getNameById($ticket->getVar('department'))); |
||||||||
| 1625 | |||||||||
| 1626 | if ($dept_email_tpl) { |
||||||||
| 1627 | $sendTo = $this->getSubscribedStaff($ticket, $dept_email_tpl['bit_value'], $settings); |
||||||||
| 1628 | $success = $this->sendEvents($dept_email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$dept_email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1629 | } |
||||||||
| 1630 | |||||||||
| 1631 | if ($user_email_tpl) { |
||||||||
| 1632 | $status = $this->statusHandler->get($ticket->getVar('status')); |
||||||||
| 1633 | if ($isStaff || (!$isStaff && 2 != $status->getVar('state'))) { // Send to ticket submitter |
||||||||
| 1634 | //$sendTo = $this->getEmail($ticket->getVar('uid')); |
||||||||
| 1635 | $sendTo = $this->getSubscribedUsers($ticket->getVar('id')); |
||||||||
| 1636 | $success = $this->sendEvents($user_email_tpl, $sendTo, $tags); |
||||||||
| 1637 | } |
||||||||
| 1638 | } |
||||||||
| 1639 | } |
||||||||
| 1640 | |||||||||
| 1641 | return true; |
||||||||
| 1642 | } |
||||||||
| 1643 | |||||||||
| 1644 | /** |
||||||||
| 1645 | * Event: batch_response |
||||||||
| 1646 | * Triggered after a batch response addition |
||||||||
| 1647 | * Note: the $response->getVar('ticketid') field is empty for this function |
||||||||
| 1648 | * @param array $tickets The Ticket objects that were modified |
||||||||
| 1649 | * @param Response $response The response added to each ticket |
||||||||
| 1650 | */ |
||||||||
| 1651 | public function batch_response(array $tickets, Response $response): void |
||||||||
| 1652 | { |
||||||||
| 1653 | global $xoopsUser, $xoopsConfig; |
||||||||
| 1654 | $helper = Helper::getInstance(); |
||||||||
| 1655 | $dept_email_tpl = []; |
||||||||
| 1656 | |||||||||
| 1657 | $displayName = $helper->getConfig('xhelp_displayName'); // Determines if username or real name is displayed |
||||||||
| 1658 | $responseText = ($response->getVar('message', 'n')); |
||||||||
| 1659 | $uname = $xoopsUser->getVar('uname'); |
||||||||
| 1660 | $uid = $xoopsUser->getVar('uid'); |
||||||||
| 1661 | $updated = \formatTimestamp(\time(), 'm'); |
||||||||
| 1662 | $private = $response->getVar('private'); |
||||||||
| 1663 | $departmentMailBoxHandler = $this->helper->getHandler('DepartmentMailBox'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1664 | $mailBoxes = $departmentMailBoxHandler->getObjects(null, true); |
||||||||
| 1665 | $departmentHandler = $this->helper->getHandler('Department'); |
||||||||
| 1666 | |||||||||
| 1667 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_NEWRESPONSE); |
||||||||
| 1668 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 1669 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
| 1670 | $staff_options = $settings->getVar('staff_options') ?? ''; |
||||||||
| 1671 | |||||||||
| 1672 | if (\XHELP_NOTIF_STAFF_NONE != $staff_setting) { |
||||||||
| 1673 | $dept_email_tpl = $this->getEmailTpl('dept', 'new_response', $this->module, $template_id); |
||||||||
| 1674 | } else { |
||||||||
| 1675 | $dept_email_tpl = false; |
||||||||
| 1676 | } |
||||||||
| 1677 | if (\XHELP_NOTIF_USER_NO != $user_setting) { |
||||||||
| 1678 | $user_email_tpl = $this->getEmailTpl('ticket', 'new_this_response', $this->module, $template_id); |
||||||||
| 1679 | } else { |
||||||||
| 1680 | $user_email_tpl = false; |
||||||||
| 1681 | } |
||||||||
| 1682 | |||||||||
| 1683 | foreach ($tickets as $ticket) { |
||||||||
| 1684 | $bFromEmail = false; |
||||||||
| 1685 | $tags = []; |
||||||||
| 1686 | $tags['TICKET_ID'] = $ticket->getVar('id'); |
||||||||
| 1687 | $tags['TICKET_RESPONSE'] = $responseText; |
||||||||
| 1688 | $tags['TICKET_SUBJECT'] = $ticket->getVar('subject'); |
||||||||
| 1689 | $tags['TICKET_TIMESPENT'] = $response->getVar('timeSpent'); |
||||||||
| 1690 | $tags['TICKET_STATUS'] = Utility::getStatus($ticket->getVar('status')); |
||||||||
| 1691 | $tags['TICKET_RESPONDER'] = $uname; |
||||||||
| 1692 | $tags['TICKET_POSTED'] = $updated; |
||||||||
| 1693 | $tags['TICKET_URL'] = \XHELP_BASE_URL . '/ticket.php?id=' . $ticket->getVar('id'); |
||||||||
| 1694 | $tags['TICKET_DEPARTMENT'] = ($departmentHandler->getNameById($ticket->getVar('department'))); |
||||||||
| 1695 | |||||||||
| 1696 | $owner = $ticket->getVar('ownership'); |
||||||||
| 1697 | if (0 == $owner) { |
||||||||
| 1698 | $tags['TICKET_OWNERSHIP'] = \_XHELP_NO_OWNER; |
||||||||
| 1699 | } else { |
||||||||
| 1700 | $tags['TICKET_OWNERSHIP'] = Utility::getUsername($owner, $displayName); |
||||||||
|
0 ignored issues
–
show
It seems like
$displayName can also be of type null; however, parameter $displayName of XoopsModules\Xhelp\Utility::getUsername() does only seem to accept integer, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1701 | } |
||||||||
| 1702 | |||||||||
| 1703 | if ($ticket->getVar('serverid') > 0) { |
||||||||
| 1704 | //Ticket was submitted via email |
||||||||
| 1705 | $mailBox = $mailBoxes[$ticket->getVar('serverid')]; |
||||||||
| 1706 | if (\is_object($mailBox)) { |
||||||||
| 1707 | $bFromEmail = true; |
||||||||
| 1708 | } |
||||||||
| 1709 | } |
||||||||
| 1710 | |||||||||
| 1711 | if ($bFromEmail) { |
||||||||
| 1712 | $from = $mailBox->getVar('emailaddress'); |
||||||||
|
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
|
|||||||||
| 1713 | $tags['TICKET_SUPPORT_EMAIL'] = $from; |
||||||||
| 1714 | $tags['TICKET_SUPPORT_KEY'] = '{' . $ticket->getVar('emailHash') . '}'; |
||||||||
| 1715 | } else { |
||||||||
| 1716 | $from = ''; |
||||||||
| 1717 | $tags['TICKET_SUPPORT_EMAIL'] = $xoopsConfig['adminmail']; |
||||||||
| 1718 | $tags['TICKET_SUPPORT_KEY'] = ''; |
||||||||
| 1719 | } |
||||||||
| 1720 | |||||||||
| 1721 | $sendTo = []; |
||||||||
| 1722 | if ($ticket->getVar('uid') != $uid && 0 === $response->getVar('private')) { // If response from staff member |
||||||||
| 1723 | if (0 == $private) { |
||||||||
| 1724 | if ($user_email_tpl) { |
||||||||
| 1725 | $sendTo = $this->getUserEmail($ticket->getVar('uid')); |
||||||||
| 1726 | $success = $this->sendEvents($user_email_tpl, $sendTo, $tags, $from); |
||||||||
|
0 ignored issues
–
show
It seems like
$user_email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1727 | } |
||||||||
| 1728 | } elseif ($dept_email_tpl) { |
||||||||
| 1729 | if (0 != $ticket->getVar('ownership')) { |
||||||||
| 1730 | $sendTo = $this->getStaffEmail($owner, $ticket->getVar('department'), $staff_options); |
||||||||
|
0 ignored issues
–
show
It seems like
$staff_options can also be of type string; however, parameter $staff_options of XoopsModules\Xhelp\Notif...ervice::getStaffEmail() does only seem to accept array|null, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1731 | } else { |
||||||||
| 1732 | $sendTo = $this->getSubscribedStaff($ticket, $dept_email_tpl['bit_value'], $settings); |
||||||||
| 1733 | } |
||||||||
| 1734 | } |
||||||||
| 1735 | } elseif ($dept_email_tpl) {// If response from submitter |
||||||||
| 1736 | if (0 != $ticket->getVar('ownership')) { // If ticket has owner, send to owner |
||||||||
| 1737 | if ($this->isSubscribed($owner, $dept_email_tpl['bit_value'])) { // Check if the owner is subscribed |
||||||||
| 1738 | $sendTo = $this->getStaffEmail($owner, $ticket->getVar('department'), $staff_options); |
||||||||
| 1739 | } |
||||||||
| 1740 | } else { // If ticket has no owner, send to department |
||||||||
| 1741 | $sendTo = $this->getSubscribedStaff($ticket, $dept_email_tpl['bit_value'], $settings); |
||||||||
| 1742 | } |
||||||||
| 1743 | $success = $this->sendEvents($dept_email_tpl, $sendTo, $tags); |
||||||||
| 1744 | } |
||||||||
| 1745 | } |
||||||||
| 1746 | } |
||||||||
| 1747 | |||||||||
| 1748 | /** |
||||||||
| 1749 | * Event: merge_tickets |
||||||||
| 1750 | * Triggered after two tickets are merged |
||||||||
| 1751 | * @param int $ticket1 First ticketid being merged |
||||||||
| 1752 | * @param int $ticket2 Second ticketid being merged |
||||||||
| 1753 | * @param int $newTicket Resulting ticketid after merge |
||||||||
| 1754 | */ |
||||||||
| 1755 | public function merge_tickets(int $ticket1, int $ticket2, int $newTicket): void |
||||||||
| 1756 | { |
||||||||
| 1757 | global $xoopsUser; |
||||||||
| 1758 | /** @var \XoopsModules\Xhelp\TicketHandler $ticketHandler */ |
||||||||
| 1759 | $ticketHandler = $this->helper->getHandler('Ticket'); |
||||||||
|
0 ignored issues
–
show
|
|||||||||
| 1760 | /** @var \XoopsModules\Xhelp\Ticket $ticket */ |
||||||||
| 1761 | $ticket = $ticketHandler->get($newTicket); |
||||||||
| 1762 | |||||||||
| 1763 | $tags = []; |
||||||||
| 1764 | $tags['TICKET_MERGER'] = $xoopsUser->getVar('uname'); |
||||||||
| 1765 | $tags['TICKET1'] = $ticket1; |
||||||||
| 1766 | $tags['TICKET2'] = $ticket2; |
||||||||
| 1767 | $tags['TICKET_URL'] = \XHELP_BASE_URL . '/ticket.php?id=' . $newTicket; |
||||||||
| 1768 | |||||||||
| 1769 | $settings = $this->notificationHandler->get(\XHELP_NOTIF_MERGETICKET); |
||||||||
| 1770 | $staff_setting = $settings->getVar('staff_setting') ?? ''; |
||||||||
| 1771 | $user_setting = $settings->getVar('user_setting') ?? ''; |
||||||||
| 1772 | |||||||||
| 1773 | if (\XHELP_NOTIF_STAFF_NONE != $staff_setting) { |
||||||||
| 1774 | $email_tpl = $this->getEmailTpl('dept', 'merge_ticket', $this->module, $template_id); |
||||||||
| 1775 | if ($email_tpl) { // Send email to dept members |
||||||||
| 1776 | $sendTo = $this->getSubscribedStaff($ticket, $email_tpl['bit_value'], $settings); |
||||||||
| 1777 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
|
0 ignored issues
–
show
It seems like
$email_tpl can also be of type true; however, parameter $email_tpl of XoopsModules\Xhelp\Notif...onService::sendEvents() does only seem to accept array|object, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||||
| 1778 | } |
||||||||
| 1779 | } |
||||||||
| 1780 | |||||||||
| 1781 | if (\XHELP_NOTIF_USER_NO != $user_setting) { |
||||||||
| 1782 | $email_tpl = $this->getEmailTpl('ticket', 'merge_this_ticket', $this->module, $template_id); |
||||||||
| 1783 | if ($email_tpl) { // Send confirm email to submitter |
||||||||
| 1784 | //$sendTo = $this->getEmail($ticket->getVar('uid')); |
||||||||
| 1785 | $sendTo = $this->getSubscribedUsers($newTicket); |
||||||||
| 1786 | $success = $this->sendEvents($email_tpl, $sendTo, $tags); |
||||||||
| 1787 | } |
||||||||
| 1788 | } |
||||||||
| 1789 | } |
||||||||
| 1790 | |||||||||
| 1791 | /** |
||||||||
| 1792 | * Event: new_faq |
||||||||
| 1793 | * Triggered after FAQ addition |
||||||||
| 1794 | * @param Ticket $ticket Ticket used as base for FAQ |
||||||||
| 1795 | * @param Faq $faq FAQ that was added |
||||||||
| 1796 | */ |
||||||||
| 1797 | public function new_faq(Ticket $ticket, Faq $faq): void |
||||||||
|
0 ignored issues
–
show
The parameter
$faq is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body. Loading history...
The parameter
$ticket is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body. Loading history...
|
|||||||||
| 1798 | { |
||||||||
| 1799 | } |
||||||||
| 1800 | |||||||||
| 1801 | /** |
||||||||
| 1802 | * Only have 1 instance of class used |
||||||||
| 1803 | * @return Service {@link Service} |
||||||||
| 1804 | */ |
||||||||
| 1805 | public static function getInstance(): Service |
||||||||
| 1806 | { |
||||||||
| 1807 | static $instance; |
||||||||
| 1808 | if (null === $instance) { |
||||||||
| 1809 | $instance = new static(); |
||||||||
| 1810 | } |
||||||||
| 1811 | |||||||||
| 1812 | return $instance; |
||||||||
| 1813 | } |
||||||||
| 1814 | |||||||||
| 1815 | public function attachEvents(): void |
||||||||
| 1816 | { |
||||||||
| 1817 | $this->attachEvent('batch_delete_ticket', $this); |
||||||||
| 1818 | $this->attachEvent('batch_dept', $this); |
||||||||
| 1819 | $this->attachEvent('batch_owner', $this); |
||||||||
| 1820 | $this->attachEvent('batch_priority', $this); |
||||||||
| 1821 | $this->attachEvent('batch_response', $this); |
||||||||
| 1822 | $this->attachEvent('batch_status', $this); |
||||||||
| 1823 | $this->attachEvent('close_ticket', $this); |
||||||||
| 1824 | $this->attachEvent('delete_ticket', $this); |
||||||||
| 1825 | $this->attachEvent('edit_response', $this); |
||||||||
| 1826 | $this->attachEvent('edit_ticket', $this); |
||||||||
| 1827 | $this->attachEvent('merge_tickets', $this); |
||||||||
| 1828 | $this->attachEvent('new_response', $this); |
||||||||
| 1829 | $this->attachEvent('new_ticket', $this); |
||||||||
| 1830 | $this->attachEvent('update_owner', $this); |
||||||||
| 1831 | $this->attachEvent('update_priority', $this); |
||||||||
| 1832 | $this->attachEvent('update_status', $this); |
||||||||
| 1833 | } |
||||||||
| 1834 | } |
||||||||
| 1835 |