/** * * * @dataProvider provider * */ public function testImportAttachmentsFromCSVFile($test_filename, $expected_result, $update, $dry_run) { $path = dirname(__FILE__) . '/' . $test_filename; // Open the CSV file $result = AttachmentsImport::importAttachmentsFromCSVFile($path, $verify_parent = true, $update, $dry_run); if (is_numeric($expected_result) && is_numeric($result)) { $this->assertEquals((int) $expected_result, (int) $result); } elseif (is_array($result)) { $this->assertEquals((int) $expected_result, count($result)); } else { // Cut off the error number for comparison $errmsg = substr($result, 0, strpos($result, ' (ERR')); $this->assertEquals($expected_result, $errmsg); } // Delete the attachments if (!$update) { $db = JFactory::getDBO(); if (is_array($result)) { $query = $db->getQuery(true); $ids = implode(',', $result); $query->delete('#__attachments')->where("id IN ( {$ids} )"); $db->setQuery($query); if (!$db->query()) { $this->assertTrue(false, 'ERROR deleting new test attachments' . $db->getErrorMsg()); } } } }
/** * Install attachments data from CSV file */ public function installAttachmentsFromCsvFile() { // Access check. if (!JFactory::getUser()->authorise('core.admin', 'com_attachments')) { return JError::raiseError(404, JText::_('JERROR_ALERTNOAUTHOR') . ' (ERR 160)'); } require_once JPATH_ADMINISTRATOR . '/components/com_attachments/import.php'; $filename = JRequest::getString('filename', null); if ($filename == null) { $errmsg = JText::_('ATTACH_ERROR_MUST_ADD_FILENAME_TO_URL') . ' (ERR 161)'; return JError::raiseError(500, $errmsg); } $verify_parent = JRequest::getBool('verify_parent', true); $update = JRequest::getBool('update', false); $dry_run = JRequest::getBool('dry_run', false); $status = AttachmentsImport::importAttachmentsFromCSVFile($filename, $verify_parent, $update, $dry_run); // Abort if it is an error message if (is_string($status)) { return JError::raiseError(500, $status); } // Otherwise, report the results if (is_array($status)) { $msg = JText::sprintf('ATTACH_ADDED_DATA_FOR_N_ATTACHMENTS', count($status)); $this->setRedirect('index.php?option=com_attachments', $msg); } else { if ($dry_run) { $msg = JText::sprintf('ATTACH_DATA_FOR_N_ATTACHMENTS_OK', $status) . ' (ERR 162)'; return JError::raiseNotice(200, $msg); } else { $errmsg = JText::sprintf('ATTACH_ERROR_IMPORTING_ATTACHMENTS_S', $status) . ' (ERR 163)'; return JError::raiseError(500, $errmsg); } } }