Code Duplication    Length = 91-91 lines in 2 locations

admin/letter.php 1 location

@@ 307-397 (lines=91) @@
304
        $letterObj->setVar('letter_submitter',  Request::getInt('letter_submitter', 0));
305
        $letterObj->setVar('letter_created',    Request::getInt('letter_created', time()));
306
307
        if ($helper->getHandler('Letter')->insert($letterObj)) {
308
            $letter_id = $letterObj->getVar('letter_id');
309
            // update existing_attachments
310
            $existing_attachments_mode = Request::getArray('existing_attachments_mode', []);
311
            foreach ($existing_attachments_mode as $attachment_id => $attachment_mode) {
312
                $attachmentObj = $helper->getHandler('Attachment')->get($attachment_id);
313
                $attachmentObj->setVar('attachment_mode', $attachment_mode);
314
                $helper->getHandler('Attachment')->insert($attachmentObj);
315
            }
316
            // upload attachments
317
            $uploadedFiles = [];
318
            require_once XOOPS_ROOT_PATH . '/class/uploader.php';
319
            $uploaddir = XOOPS_UPLOAD_PATH . $helper->getConfig('xn_attachment_path') . $letterId . '/';
320
            // check upload_dir
321
            if (!is_dir($uploaddir)) {
322
                $indexFile = XOOPS_UPLOAD_PATH . '/index.html';
323
                if (!mkdir($uploaddir, 0777) && !is_dir($uploaddir)) {
324
                    throw new \RuntimeException(sprintf('Directory "%s" was not created', $uploaddir));
325
                }
326
                chmod($uploaddir, 0777);
327
                copy($indexFile, $uploaddir . 'index.html');
328
            }
329
            $new_attachments_mode = Request::getArray('new_attachments_mode', []);
330
            for ($upl = 0; $upl < $helper->getConfig('xn_maxattachments'); ++$upl) {
331
                $uploader = new \XoopsMediaUploader($uploaddir, $helper->getConfig('xn_mimetypes'), $helper->getConfig('xn_maxsize'), null, null);
332
                if ($uploader->fetchMedia(@$_POST['xoops_upload_file'][$upl])) {
333
                    //$uploader->setPrefix("xn_") ; keep original name
334
                    $uploader->fetchMedia($_POST['xoops_upload_file'][$upl]);
335
                    if (!$uploader->upload()) {
336
                        $errors = $uploader->getErrors();
337
                        redirect_header('<script>javascript:history.go(-1)</script>', 3, $errors);
338
                    } else {
339
                        preg_match('/ne\w_attachment_index=([0-9]+)/', $_POST['xoops_upload_file'][$upl], $matches);
340
                        $index           = $matches[1];
341
                        $uploadedFiles[] = [
342
                            'name' => $uploader->getSavedFileName(),
343
                            'type' => $uploader->getMediaType(),
344
                            'size' => $uploader->getMediaSize(),
345
                            'mode' => $new_attachments_mode[$index],
346
                        ];
347
                    }
348
                }
349
            }
350
            // create items in attachments
351
            foreach ($uploadedFiles as $file) {
352
                $attachmentObj = $helper->getHandler('Attachment')->create();
353
                $attachmentObj->setVar('attachment_letter_id', $letterId);
354
                $attachmentObj->setVar('attachment_name', $file['name']);
355
                $attachmentObj->setVar('attachment_type', $file['type']);
356
                $attachmentObj->setVar('attachment_submitter', $xoopsUser->uid());
357
                $attachmentObj->setVar('attachment_created', time());
358
                $attachmentObj->setVar('attachment_size', $file['size']);
359
                $attachmentObj->setVar('attachment_mode', $file['mode']);
360
361
                $helper->getHandler('Attachment')->insert($attachmentObj);
362
            }
363
            // create item in protocol
364
            $protocolObj = $helper->getHandler('Protocol')->create();
365
            $protocolObj->setVar('protocol_letter_id', $letterId);
366
            $protocolObj->setVar('protocol_subscriber_id', 0);
367
            $protocolObj->setVar('protocol_success', true);
368
            $action = Request::getInt('letter_action', _XNEWSLETTER_LETTER_ACTION_VAL_NO);
369
            switch ($action) {
370
                case _XNEWSLETTER_LETTER_ACTION_VAL_PREVIEW:
371
                    $redirectUrl = "?op=show_preview&letter_id={$letterId}";
372
                    break;
373
                case _XNEWSLETTER_LETTER_ACTION_VAL_SEND:
374
                    $redirectUrl = "sendletter.php?op=send_letter&letter_id={$letterId}";
375
                    break;
376
                case _XNEWSLETTER_LETTER_ACTION_VAL_SENDTEST:
377
                    $redirectUrl = "sendletter.php?op=send_test&letter_id={$letterId}";
378
                    break;
379
                default:
380
                    $redirectUrl = '?op=list_letters';
381
                    break;
382
            }
383
            $protocolObj->setVar('protocol_status', _AM_XNEWSLETTER_LETTER_ACTION_SAVED); // old style
384
            $protocolObj->setVar('protocol_status_str_id', _XNEWSLETTER_PROTOCOL_STATUS_SAVED); // new from v1.3
385
            $protocolObj->setVar('protocol_status_vars', []); // new from v1.3
386
            $protocolObj->setVar('protocol_submitter', $xoopsUser->uid());
387
            $protocolObj->setVar('protocol_created', time());
388
389
            if ($helper->getHandler('Protocol')->insert($protocolObj)) {
390
                // create protocol is ok
391
                redirect_header($redirectUrl, 3, _AM_XNEWSLETTER_FORMOK);
392
            } else {
393
                $GLOBALS['xoopsTpl']->assign('error', $protocolObj->getHtmlErrors());
394
            }
395
        } else {
396
            $GLOBALS['xoopsTpl']->assign('error', $letterObj->getHtmlErrors());
397
        }
398
        break;
399
    case 'clone_letter':
400
    case 'copy_letter':

letter.php 1 location

@@ 486-576 (lines=91) @@
483
        $letterObj->setVar('letter_submitter',  Request::getInt('letter_submitter', 0));
484
        $letterObj->setVar('letter_created',    Request::getInt('letter_created', time()));
485
486
        if ($helper->getHandler('Letter')->insert($letterObj)) {
487
            $letter_id = $letterObj->getVar('letter_id');
488
            // update existing_attachments
489
            $existing_attachments_mode = Request::getArray('existing_attachments_mode', []);
490
            foreach ($existing_attachments_mode as $attachment_id => $attachment_mode) {
491
                $attachmentObj = $helper->getHandler('Attachment')->get($attachment_id);
492
                $attachmentObj->setVar('attachment_mode', $attachment_mode);
493
                $helper->getHandler('Attachment')->insert($attachmentObj);
494
            }
495
            // upload attachments
496
            $uploadedFiles = [];
497
            require_once XOOPS_ROOT_PATH . '/class/uploader.php';
498
            $uploaddir = XOOPS_UPLOAD_PATH . $helper->getConfig('xn_attachment_path') . $letter_id . '/';
499
            // check upload_dir
500
            if (!is_dir($uploaddir)) {
501
                $indexFile = XOOPS_UPLOAD_PATH . '/index.html';
502
                if (!mkdir($uploaddir, 0777) && !is_dir($uploaddir)) {
503
                    throw new \RuntimeException(sprintf('Directory "%s" was not created', $uploaddir));
504
                }
505
                chmod($uploaddir, 0777);
506
                copy($indexFile, $uploaddir . 'index.html');
507
            }
508
            $new_attachments_mode = Request::getArray('new_attachments_mode', []);
509
            for ($upl = 0; $upl < $helper->getConfig('xn_maxattachments'); ++$upl) {
510
                $uploader = new \XoopsMediaUploader($uploaddir, $helper->getConfig('xn_mimetypes'), $helper->getConfig('xn_maxsize'), null, null);
511
                if ($uploader->fetchMedia(@$_POST['xoops_upload_file'][$upl])) {
512
                    //$uploader->setPrefix("xn_") ; keep original name
513
                    $uploader->fetchMedia($_POST['xoops_upload_file'][$upl]);
514
                    if (!$uploader->upload()) {
515
                        $errors = $uploader->getErrors();
516
                        redirect_header('<script>javascript:history.go(-1)</script>', 3, $errors);
517
                    } else {
518
                        preg_match('/ne\w_attachment_index=([0-9]+)/', $_POST['xoops_upload_file'][$upl], $matches);
519
                        $index           = $matches[1];
520
                        $uploadedFiles[] = [
521
                            'name' => $uploader->getSavedFileName(),
522
                            'type' => $uploader->getMediaType(),
523
                            'size' => $uploader->getMediaSize(),
524
                            'mode' => $new_attachments_mode[$index],
525
                        ];
526
                    }
527
                }
528
            }
529
            // create items in attachments
530
            foreach ($uploadedFiles as $file) {
531
                $attachmentObj = $helper->getHandler('Attachment')->create();
532
                $attachmentObj->setVar('attachment_letter_id', $letter_id);
533
                $attachmentObj->setVar('attachment_name', $file['name']);
534
                $attachmentObj->setVar('attachment_type', $file['type']);
535
                $attachmentObj->setVar('attachment_submitter', $xoopsUser->uid());
536
                $attachmentObj->setVar('attachment_created', time());
537
                $attachmentObj->setVar('attachment_size', $file['size']);
538
                $attachmentObj->setVar('attachment_mode', $file['mode']);
539
540
                $helper->getHandler('Attachment')->insert($attachmentObj);
541
            }
542
            // create item in protocol
543
            $protocolObj = $helper->getHandler('Protocol')->create();
544
            $protocolObj->setVar('protocol_letter_id', $letter_id);
545
            $protocolObj->setVar('protocol_subscriber_id', 0);
546
            $protocolObj->setVar('protocol_success', true);
547
            $action = Request::getInt('letter_action', _XNEWSLETTER_LETTER_ACTION_VAL_NO);
548
            switch ($action) {
549
                case _XNEWSLETTER_LETTER_ACTION_VAL_PREVIEW:
550
                    $redirectUrl = "?op=show_preview&letter_id={$letter_id}";
551
                    break;
552
                case _XNEWSLETTER_LETTER_ACTION_VAL_SEND:
553
                    $redirectUrl = "sendletter.php?op=send_letter&letter_id={$letter_id}";
554
                    break;
555
                case _XNEWSLETTER_LETTER_ACTION_VAL_SENDTEST:
556
                    $redirectUrl = "sendletter.php?op=send_test&letter_id={$letter_id}";
557
                    break;
558
                default:
559
                    $redirectUrl = '?op=list_letters';
560
                    break;
561
            }
562
            $protocolObj->setVar('protocol_status', _AM_XNEWSLETTER_LETTER_ACTION_SAVED);
563
            $protocolObj->setVar('protocol_status_str_id', _XNEWSLETTER_PROTOCOL_STATUS_SAVED); // new from v1.3
564
            $protocolObj->setVar('protocol_status_vars', []); // new from v1.3
565
            $protocolObj->setVar('protocol_submitter', $xoopsUser->uid());
566
            $protocolObj->setVar('protocol_created', time());
567
568
            if ($helper->getHandler('Protocol')->insert($protocolObj)) {
569
                // create protocol is ok
570
                redirect_header($redirectUrl, 3, _AM_XNEWSLETTER_FORMOK);
571
            } else {
572
                $GLOBALS['xoopsTpl']->assign('error', 'Error create protocol: ' . $protocolObj->getHtmlErrors());
573
            }
574
        } else {
575
            $GLOBALS['xoopsTpl']->assign('error', 'Error create letter: ' . $protocolObj->getHtmlErrors());
576
        }
577
        break;
578
    case 'copy_letter':
579
    case 'clone_letter':