Beispiel #1
0
 /**
  * Run right at the end of the form processing
  * form needs to be set to record in database for this to hook to be called
  *
  * @return	bool
  */
 public function onAfterProcess()
 {
     $params = $this->getParams();
     $input = $this->app->input;
     $formModel = $this->getModel();
     if ($params->get('ask-receipt')) {
         if (!array_key_exists('fabrik_email_copy', $_POST)) {
             return;
         }
     }
     $rowId = $input->get('rowid');
     $config = JFactory::getConfig();
     $w = new FabrikWorker();
     $data = $this->getProcessData();
     $message = $params->get('receipt_message');
     $editURL = COM_FABRIK_LIVESITE . "index.php?option=com_" . $this->package . "&view=form&fabrik=" . $formModel->get('id') . "&rowid=" . $rowId;
     $viewURL = COM_FABRIK_LIVESITE . "index.php?option=com_" . $this->package . "&view=details&fabrik=" . $formModel->get('id') . "&rowid=" . $rowId;
     $editLink = "<a href=\"{$editURL}\">" . FText::_('EDIT') . "</a>";
     $viewLink = "<a href=\"{$viewURL}\">" . FText::_('VIEW') . "</a>";
     $message = str_replace('{fabrik_editlink}', $editLink, $message);
     $message = str_replace('{fabrik_viewlink}', $viewLink, $message);
     $message = str_replace('{fabrik_editurl}', $editURL, $message);
     $message = str_replace('{fabrik_viewurl}', $viewURL, $message);
     $message = $w->parseMessageForPlaceHolder($message, $data, false);
     $to = $w->parseMessageForPlaceHolder($params->get('receipt_to'), $data, false);
     $to = FabrikString::stripSpace($to);
     if (empty($to)) {
         /* $$$ hugh - not much point trying to send if we don't have a To address
          * (happens frequently if folk don't properly validate their form inputs and are using placeholders)
          * @TODO - might want to add some feedback about email not being sent
          */
         return;
     }
     $to = explode(',', $to);
     $subject = html_entity_decode($params->get('receipt_subject', ''));
     $subject = JText::_($w->parseMessageForPlaceHolder($subject, $data, false));
     $from = $config->get('mailfrom', '');
     $fromName = $config->get('fromname', '');
     // Darn silly hack for poor joomfish settings where lang parameters are set to override joomla global config but not mail translations entered
     $rawConfig = new JConfig();
     if ($from === '') {
         $from = $rawConfig->mailfrom;
     }
     if ($fromName === '') {
         $fromName = $rawConfig->fromname;
     }
     $from = $params->get('from_email', $from);
     $res = FabrikWorker::sendMail($from, $fromName, $to, $subject, $message, true);
     if (!$res) {
         throw new RuntimeException('Couldn\'t send receipt', 500);
     }
 }
Beispiel #2
0
 /**
  * Helper function to decide which js files and shim files should be used
  *
  * @since   3.1b
  *
  * @return  array (element js files (not used), array of element names, require js shim setup files)
  */
 protected function loadElementJS()
 {
     if (!empty($this->elementJs)) {
         return $this->elementJs;
     }
     $params = $this->getParams();
     $input = $this->app->input;
     $listModel = JModelLegacy::getInstance('list', 'FabrikFEModel');
     $listModel->setId($input->getInt('listid'));
     $elements = $listModel->getElements('safecolname');
     $pels = FabrikString::stripSpace($params->get('inline_editable_elements', ''));
     $use = json_decode($pels);
     if (!is_object($use)) {
         $aEls = trim($pels) == '' ? array() : explode(",", $pels);
         $use = new stdClass();
         foreach ($aEls as $e) {
             $use->{$e} = array($e);
         }
     }
     $els = array();
     $srcs = array();
     $test = (array) $use;
     $shim = array();
     if (!empty($test)) {
         foreach ($use as $key => $fields) {
             if (array_key_exists($key, $elements)) {
                 $trigger = $elements[$key];
                 $els[$key] = new stdClass();
                 $els[$key]->elid = $trigger->getId();
                 $els[$key]->plugins = array();
                 foreach ($fields as $field) {
                     $val = $elements[$field];
                     // Load in all element js classes
                     if (is_object($val)) {
                         $val->formJavascriptClass($srcs, '', $shim);
                         $els[$key]->plugins[$field] = $val->getElement()->id;
                     }
                 }
             }
         }
     } else {
         foreach ($elements as $key => $val) {
             // Stop elements such as the password element from incorrectly updating themselves
             if ($val->recordInDatabase(array())) {
                 $key = FabrikString::safeColNameToArrayKey($key);
                 $els[$key] = new stdClass();
                 $els[$key]->elid = $val->getId();
                 $els[$key]->plugins = array();
                 $els[$key]->plugins[$key] = $val->getElement()->id;
                 // Load in all element js classes
                 $val->formJavascriptClass($srcs, '', $shim);
             }
         }
     }
     $this->elementJs = array($srcs, $els, $shim);
     return $this->elementJs;
 }