Code Duplication    Length = 107-123 lines in 2 locations

main/coursecopy/classes/CourseRestorer.class.php 2 locations

@@ 1569-1691 (lines=123) @@
1566
	/**
1567
	 * Restore announcements
1568
	 */
1569
    public function restore_announcements($sessionId = 0)
1570
    {
1571
		if ($this->course->has_resources(RESOURCE_ANNOUNCEMENT)) {
1572
            $sessionId = intval($sessionId);
1573
			$table = Database :: get_course_table(TABLE_ANNOUNCEMENT);
1574
			$resources = $this->course->resources;
1575
			foreach ($resources[RESOURCE_ANNOUNCEMENT] as $id => $announcement) {
1576
1577
				// check resources inside html from ckeditor tool and copy correct urls into recipient course
1578
                $announcement->content = DocumentManager::replace_urls_inside_content_html_from_copy_course(
1579
                    $announcement->content,
1580
                    $this->course->code,
1581
                    $this->course->destination_path,
1582
                    $this->course->backup_path,
1583
                    $this->course->info['path']
1584
                );
1585
1586
                $params = [
1587
                    'c_id' => $this->destination_course_id,
1588
                    'title' =>  self::DBUTF8($announcement->title),
1589
                    'content' => self::DBUTF8($announcement->content),
1590
                    'end_date' => $announcement->date,
1591
                    'display_order' => $announcement->display_order,
1592
                    'email_sent' => $announcement->email_sent,
1593
                    'session_id' => $sessionId,
1594
                ];
1595
1596
				$new_announcement_id = Database::insert($table, $params);
1597
1598
                if ($new_announcement_id) {
1599
                    $sql = "UPDATE $table SET id = iid WHERE iid = $new_announcement_id";
1600
                    Database::query($sql);
1601
1602
                    if (!isset($this->course->resources[RESOURCE_ANNOUNCEMENT][$id])) {
1603
                        $this->course->resources[RESOURCE_ANNOUNCEMENT][$id] = new stdClass();
1604
                    }
1605
                    $this->course->resources[RESOURCE_ANNOUNCEMENT][$id]->destination_id = $new_announcement_id;
1606
                }
1607
1608
				$origin_path = $this->course->backup_path.'/upload/announcements/';
1609
				$destination_path = api_get_path(SYS_COURSE_PATH).$this->course->destination_path.'/upload/announcements/';
1610
1611
				// Copy announcement attachment file
1612
				if (!empty($this->course->orig)) {
1613
1614
					$table_attachment = Database::get_course_table(TABLE_ANNOUNCEMENT_ATTACHMENT);
1615
					$sql = 'SELECT path, comment, size, filename
1616
					        FROM '.$table_attachment.'
1617
					        WHERE
1618
					            c_id = '.$this->destination_course_id.' AND
1619
					            announcement_id = '.$id;
1620
					$attachment_event = Database::query($sql);
1621
					$attachment_event = Database::fetch_object($attachment_event);
1622
1623
					if (file_exists($origin_path.$attachment_event->path) &&
1624
                        !is_dir($origin_path.$attachment_event->path)
1625
                    ) {
1626
						$new_filename = uniqid(''); //ass seen in the add_agenda_attachment_file() function in agenda.inc.php
1627
                        $copy_result = copy(
1628
                            $origin_path.$attachment_event->path,
1629
                            $destination_path.$new_filename
1630
                        );
1631
1632
						if ($copy_result) {
1633
							$table_attachment = Database :: get_course_table(TABLE_ANNOUNCEMENT_ATTACHMENT);
1634
1635
                            $params = [
1636
                                'c_id' => $this->destination_course_id,
1637
                                'path' => self::DBUTF8($new_filename),
1638
                                'comment' => self::DBUTF8($attachment_event->comment),
1639
                                'size' => $attachment_event->size,
1640
                                'filename' => $attachment_event->filename,
1641
                                'announcement_id' => $new_announcement_id,
1642
                            ];
1643
1644
                            $attachmentId = Database::insert($table_attachment, $params);
1645
1646
                            if ($attachmentId) {
1647
                                $sql = "UPDATE $table_attachment SET id = iid WHERE iid = $attachmentId";
1648
                                Database::query($sql);
1649
                            }
1650
						}
1651
					}
1652
				} else {
1653
					// get the info of the file
1654
					if (!empty($announcement->attachment_path) &&
1655
                        is_file($origin_path.$announcement->attachment_path) &&
1656
                        is_readable($origin_path.$announcement->attachment_path)
1657
                    ) {
1658
						$new_filename = uniqid(''); //ass seen in the add_agenda_attachment_file() function in agenda.inc.php
1659
						$copy_result = copy($origin_path.$announcement->attachment_path, $destination_path.$new_filename);
1660
1661
						if ($copy_result) {
1662
							$table_attachment = Database :: get_course_table(TABLE_ANNOUNCEMENT_ATTACHMENT);
1663
							/*$sql = "INSERT INTO ".$table_attachment." SET
1664
							        c_id = ".$this->destination_course_id." ,
1665
							        path = '".self::DBUTF8escapestring($new_filename)."',
1666
							        comment = '".self::DBUTF8escapestring($announcement->attachment_comment)."',
1667
							        size = '".$announcement->attachment_size."', filename = '".$announcement->attachment_filename."',
1668
							        announcement_id = '".$new_announcement_id."' ";
1669
							Database::query($sql);*/
1670
1671
                            $params = [
1672
                                'c_id' => $this->destination_course_id,
1673
                                'path' => self::DBUTF8($new_filename),
1674
                                'comment' => self::DBUTF8($announcement->attachment_comment),
1675
                                'size' => $announcement->attachment_size,
1676
                                'filename' => $announcement->attachment_filename,
1677
                                'announcement_id' => $new_announcement_id,
1678
                            ];
1679
1680
                            $attachmentId = Database::insert($table_attachment, $params);
1681
1682
                            if ($attachmentId) {
1683
                                $sql = "UPDATE $table_attachment SET id = iid WHERE iid = $attachmentId";
1684
                                Database::query($sql);
1685
                            }
1686
						}
1687
					}
1688
				}
1689
			}
1690
		}
1691
	}
1692
1693
    /**
1694
     * Restore Quiz
@@ 1411-1517 (lines=107) @@
1408
	/**
1409
	 * Restore events
1410
	 */
1411
    public function restore_events($sessionId = 0)
1412
    {
1413
		if ($this->course->has_resources(RESOURCE_EVENT)) {
1414
            $sessionId = intval($sessionId);
1415
			$table = Database :: get_course_table(TABLE_AGENDA);
1416
			$resources = $this->course->resources;
1417
			foreach ($resources[RESOURCE_EVENT] as $id => $event) {
1418
				// check resources inside html from ckeditor tool and copy correct urls into recipient course
1419
                $event->content = DocumentManager::replace_urls_inside_content_html_from_copy_course(
1420
                    $event->content,
1421
                    $this->course->code,
1422
                    $this->course->destination_path,
1423
                    $this->course->backup_path,
1424
                    $this->course->info['path']
1425
                );
1426
1427
                $params = [
1428
                    'c_id' => $this->destination_course_id,
1429
                    'title' => self::DBUTF8($event->title),
1430
                    'content' => self::DBUTF8($event->content),
1431
                    'all_day' => $event->all_day,
1432
                    'start_date' => $event->start_date,
1433
                    'end_date' => $event->end_date,
1434
                    'session_id' => $sessionId,
1435
                ];
1436
				$new_event_id = Database::insert($table, $params);
1437
1438
                if ($new_event_id) {
1439
                    $sql = "UPDATE $table SET id = iid WHERE iid = $new_event_id";
1440
                    Database::query($sql);
1441
1442
                    if (!isset($this->course->resources[RESOURCE_EVENT][$id])) {
1443
                        $this->course->resources[RESOURCE_EVENT][$id] = new stdClass();
1444
                    }
1445
1446
                    $this->course->resources[RESOURCE_EVENT][$id]->destination_id = $new_event_id;
1447
                }
1448
1449
				// Copy event attachment
1450
1451
				$origin_path = $this->course->backup_path.'/upload/calendar/';
1452
				$destination_path = api_get_path(SYS_COURSE_PATH).$this->course->destination_path.'/upload/calendar/';
1453
1454
				if (!empty($this->course->orig)) {
1455
1456
					$table_attachment = Database :: get_course_table(TABLE_AGENDA_ATTACHMENT);
1457
					$sql = 'SELECT path, comment, size, filename
1458
					        FROM '.$table_attachment.'
1459
					        WHERE c_id = '.$this->destination_course_id.' AND agenda_id = '.$id;
1460
					$attachment_event = Database::query($sql);
1461
					$attachment_event = Database::fetch_object($attachment_event);
1462
1463
					if (file_exists($origin_path.$attachment_event->path) &&
1464
                        !is_dir($origin_path.$attachment_event->path)
1465
                    ) {
1466
						$new_filename = uniqid(''); //ass seen in the add_agenda_attachment_file() function in agenda.inc.php
1467
						$copy_result = copy($origin_path.$attachment_event->path, $destination_path.$new_filename);
1468
						//$copy_result = true;
1469
						if ($copy_result) {
1470
							$table_attachment = Database :: get_course_table(TABLE_AGENDA_ATTACHMENT);
1471
1472
							$params = [
1473
                                'c_id' => $this->destination_course_id,
1474
                                'path' => self::DBUTF8($new_filename),
1475
                                'comment' => self::DBUTF8($attachment_event->comment),
1476
                                'size' => $attachment_event->size,
1477
                                'filename' => $attachment_event->filename,
1478
                                'agenda_id' => $new_event_id,
1479
                            ];
1480
                            $id = Database::insert($table_attachment, $params);
1481
                            if ($id) {
1482
                                $sql = "UPDATE $table_attachment SET id = iid WHERE iid = $id";
1483
                                Database::query($sql);
1484
                            }
1485
                        }
1486
					}
1487
				} else {
1488
					// get the info of the file
1489
					if (!empty($event->attachment_path) &&
1490
                        is_file($origin_path.$event->attachment_path) &&
1491
                        is_readable($origin_path.$event->attachment_path)
1492
                    ) {
1493
						$new_filename = uniqid(''); //ass seen in the add_agenda_attachment_file() function in agenda.inc.php
1494
						$copy_result = copy($origin_path.$event->attachment_path, $destination_path.$new_filename);
1495
						if ($copy_result) {
1496
							$table_attachment = Database :: get_course_table(TABLE_AGENDA_ATTACHMENT);
1497
1498
                            $params = [
1499
                                'c_id' => $this->destination_course_id,
1500
                                'path' => self::DBUTF8($new_filename),
1501
                                'comment' => self::DBUTF8($event->attachment_comment),
1502
                                'size' => $event->size,
1503
                                'filename' => $event->filename,
1504
                                'agenda_id' => $new_event_id,
1505
                            ];
1506
                            $id = Database::insert($table_attachment, $params);
1507
1508
                            if ($id) {
1509
                                $sql = "UPDATE $table_attachment SET id = iid WHERE iid = $id";
1510
                                Database::query($sql);
1511
                            }
1512
						}
1513
					}
1514
				}
1515
			}
1516
		}
1517
	}
1518
1519
	/**
1520
	 * Restore course-description