Esempio n. 1
0
 public function importFromFile(&$importFile)
 {
     $app = JFactory::getApplication();
     if (empty($importFile['name'])) {
         $app->enqueueMessage(JText::_('BROWSE_FILE'), 'notice');
         return false;
     }
     jimport('joomla.filesystem.file');
     $allowedFiles = array('csv', 'txt');
     $uploadFolder = rtrim(JPath::clean(html_entity_decode($this->config->get('uploadfolder'))), DS) . DS;
     if (strpos($uploadFolder, JPATH_ROOT) !== false) {
         $uploadFolder = str_replace(JPATH_ROOT, '', $uploadFolder);
     }
     $uploadFolder = ltrim($uploadFolder, '/');
     $uploadFolder = JPATH_ROOT . DS . $uploadFolder;
     $uploadPath = $uploadFolder;
     if (!is_dir($uploadPath)) {
         jimport('joomla.filesystem.folder');
         JFolder::create($uploadPath);
         $data = '<html><body bgcolor="#FFFFFF"></body></html>';
         JFile::write($uploadPath . 'index.html', $data);
     }
     if (!is_writable($uploadPath)) {
         @chmod($uploadPath, '0755');
         if (!is_writable($uploadPath)) {
             $app->enqueueMessage(JText::sprintf('WRITABLE_FOLDER', $uploadPath), 'notice');
         }
     }
     $attachment = new stdClass();
     $attachment->filename = strtolower(JFile::makeSafe($importFile['name']));
     $attachment->size = $importFile['size'];
     $attachment->extension = strtolower(substr($attachment->filename, strrpos($attachment->filename, '.') + 1));
     if (!in_array($attachment->extension, $allowedFiles)) {
         $app->enqueueMessage(JText::sprintf('ACCEPTED_TYPE', $attachment->extension, implode(',', $allowedFiles)), 'notice');
         return false;
     }
     if (!move_uploaded_file($importFile['tmp_name'], $uploadPath . $attachment->filename)) {
         if (!JFile::upload($importFile['tmp_name'], $uploadPath . $attachment->filename)) {
             $app->enqueueMessage(JText::sprintf('FAIL_UPLOAD', $importFile['tmp_name'], $uploadPath . $attachment->filename), 'error');
         }
     }
     hikaserial::increasePerf();
     $contentFile = file_get_contents($uploadPath . $attachment->filename);
     if (!$contentFile) {
         $app->enqueueMessage(JText::sprintf('FAIL_OPEN', $uploadPath . $attachment->filename), 'error');
         return false;
     }
     unlink($uploadPath . $attachment->filename);
     return $this->handleCsvContent($contentFile);
 }