コード例 #1
0
ファイル: directory.php プロジェクト: knigherrant/decopatio
 public function download()
 {
     $app = JFactory::getApplication();
     $model = $this->getModel('directory');
     $directory = $model->getDirectory();
     if (!$directory->enablecsv) {
         JError::raiseWarning(500, JText::_('RSFP_VIEW_DIRECTORY_NO_CSV'));
         return $app->redirect(JURI::root());
     }
     if (!$model->isValid()) {
         JError::raiseWarning(500, $model->getError());
         return $app->redirect(JURI::root());
     }
     $db = JFactory::getDbo();
     $params = $app->getParams('com_rsform');
     $menu = $app->getMenu();
     $active = $menu->getActive();
     $formId = $params->get('formId');
     $cids = JRequest::getVar('cid');
     JArrayHelper::toInteger($cids);
     $fields = RSFormProHelper::getDirectoryFields($formId);
     $headers = RSFormProHelper::getDirectoryStaticHeaders();
     $downloadableFields = array();
     $downloadableFieldCaptions = array();
     foreach ($fields as $field) {
         if ($field->incsv) {
             $downloadableFields[] = (object) array('name' => $field->FieldName, 'static' => $field->componentId < 0 && isset($headers[$field->componentId]) ? 1 : 0);
             $downloadableFieldCaptions[] = $field->FieldCaption;
         }
     }
     list($multipleSeparator, $uploadFields, $multipleFields, $secret) = RSFormProHelper::getDirectoryFormProperties($formId);
     // Get submissions
     $db->setQuery("SELECT * FROM #__rsform_submissions WHERE FormId='" . (int) $formId . "' AND SubmissionId IN (" . implode(',', $cids) . ")");
     $submissions = $db->loadObjectList('SubmissionId');
     // Get values
     $names = array();
     foreach ($downloadableFields as $field) {
         if (!$field->static) {
             $names[] = $db->q($field->name);
         }
     }
     $query = $db->getQuery(true);
     $query->select($db->qn('SubmissionId'))->select($db->qn('FieldName'))->select($db->qn('FieldValue'))->from($db->qn('#__rsform_submission_values'))->where($db->qn('FormId') . '=' . $db->q($formId));
     if ($cids) {
         $query->where($db->qn('SubmissionId') . ' IN (' . implode(',', $cids) . ')');
     }
     if ($names) {
         $query->where($db->qn('FieldName') . ' IN (' . implode(',', $names) . ')');
     }
     $db->setQuery($query);
     $values = $db->loadObjectList();
     // Combine them
     foreach ($values as $item) {
         if (!isset($submissions[$item->SubmissionId]->values)) {
             $submissions[$item->SubmissionId]->values = array();
         }
         // process here
         if (in_array($item->FieldName, $uploadFields)) {
             $item->FieldValue = '<a href="' . JURI::root() . 'index.php?option=com_rsform&amp;task=submissions.view.file&amp;hash=' . md5($item->SubmissionId . $secret . $item->FieldName) . '">' . basename($item->FieldValue) . '</a>';
         } elseif (in_array($item->FieldName, $multipleFields)) {
             $item->FieldValue = str_replace("\n", $multipleSeparator, $item->FieldValue);
         }
         $submissions[$item->SubmissionId]->values[$item->FieldName] = $item->FieldValue;
     }
     $enclosure = '"';
     $delimiter = ',';
     $download_name = $active->alias . '.csv';
     header('Cache-Control: public, must-revalidate');
     header('Cache-Control: pre-check=0, post-check=0, max-age=0');
     if (!preg_match('#MSIE#', $_SERVER['HTTP_USER_AGENT'])) {
         header("Pragma: no-cache");
     }
     header("Expires: 0");
     header("Content-Description: File Transfer");
     header("Expires: Sat, 01 Jan 2000 01:00:00 GMT");
     if (preg_match('#Opera#', $_SERVER['HTTP_USER_AGENT'])) {
         header("Content-Type: application/octetstream");
     } else {
         header("Content-Type: application/octet-stream");
     }
     header('Content-Disposition: attachment; filename="' . $download_name . '"');
     header("Content-Transfer-Encoding: binary\n");
     ob_end_clean();
     echo $enclosure . implode($enclosure . $delimiter . $enclosure, $downloadableFieldCaptions) . $enclosure . "\n";
     foreach ($cids as $cid) {
         $row = array();
         foreach ($downloadableFields as $field) {
             $value = '';
             if (!$field->static && isset($submissions[$cid]->values[$field->name])) {
                 $value = $submissions[$cid]->values[$field->name];
             } elseif ($field->static && isset($submissions[$cid]->{$field->name})) {
                 // Show a text for the "confirmed" column.
                 if ($field->name == 'confirmed') {
                     $value = $submissions[$cid]->{$field->name} ? JText::_('RSFP_YES') : JText::_('RSFP_NO');
                 } else {
                     $value = $submissions[$cid]->{$field->name};
                 }
             }
             $row[] = $value;
         }
         echo $enclosure . implode($enclosure . $delimiter . $enclosure, str_replace($enclosure, $enclosure . $enclosure, $row)) . $enclosure . "\n";
     }
     $app->close();
 }
コード例 #2
0
ファイル: directory.php プロジェクト: knigherrant/decopatio
 /**
  *	Get Submissions
  */
 public function getItems()
 {
     if ($query = $this->getListQuery()) {
         $this->_db->setQuery($query, $this->getStart(), $this->getLimit());
         $items = $this->_db->loadObjectList();
     } else {
         $items = array();
     }
     list($multipleSeparator, $uploadFields, $multipleFields, $secret) = RSFormProHelper::getDirectoryFormProperties($this->params->get('formId'));
     $this->uploadFields = $uploadFields;
     $this->multipleFields = $multipleFields;
     if ($items) {
         foreach ($items as $i => $item) {
             foreach ($uploadFields as $field) {
                 if (isset($item->{$field})) {
                     $item->{$field} = '<a href="' . JRoute::_('index.php?option=com_rsform&task=submissions.view.file&hash=' . md5($item->SubmissionId . $secret . $field)) . '">' . htmlspecialchars(basename($item->{$field})) . '</a>';
                 }
             }
             foreach ($multipleFields as $field) {
                 if (isset($item->{$field})) {
                     $item->{$field} = str_replace("\n", $multipleSeparator, htmlentities($item->{$field}, ENT_COMPAT, 'utf-8'));
                 }
             }
             $items[$i] = $item;
         }
     }
     return $items;
 }