本文整理汇总了PHP中FabrikWorker::parseMessageForPlaceholder方法的典型用法代码示例。如果您正苦于以下问题:PHP FabrikWorker::parseMessageForPlaceholder方法的具体用法?PHP FabrikWorker::parseMessageForPlaceholder怎么用?PHP FabrikWorker::parseMessageForPlaceholder使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FabrikWorker
的用法示例。
在下文中一共展示了FabrikWorker::parseMessageForPlaceholder方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: onAfterProcess
/**
* 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
*
* @param object $params plugin params
* @param object &$formModel form model
*
* @return bool
*/
public function onAfterProcess($params, &$formModel)
{
$w = new FabrikWorker();
$config_userpass = $params->get('username') . ':' . $params->get('password');
$endpoint = $params->get('endpoint');
$headers = array('Content-Type: application/xml', 'Accept: application/xml');
// Set where we should post the REST request to
$endpoint = $w->parseMessageForPlaceholder($endpoint);
$endpoint = $w->parseMessageForPlaceholder($endpoint);
// What is the root node for the xml data we are sending
$xmlParent = $params->get('xml_parent', 'ticket');
$xmlParent = $w->parseMessageForPlaceholder($xmlParent);
$xml = new SimpleXMLElement('<' . $xmlParent . '></' . $xmlParent . '>');
// Set up CURL object
$chandle = curl_init();
// Set which fields should be included in the XML data.
$include = $w->parseMessageForPlaceholder($params->get('include_list', 'milestone-id, status, summary'));
$include = explode(',', $include);
foreach ($include as $i) {
if (array_key_exists($i, $formModel->_formData)) {
$xml->addChild($i, $formModel->_formData[$i]);
} elseif (array_key_exists($i, $formModel->_fullFormData, $i)) {
$xml->addChild($i, $formModel->_fullFormData[$i]);
}
}
$output = $xml->asXML();
$curl_options = array(CURLOPT_URL => $endpoint, CURLOPT_RETURNTRANSFER => 1, CURLOPT_HTTPHEADER => $headers, CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $output, CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_USERPWD => $config_userpass, CURLOPT_CUSTOMREQUEST => 'POST');
foreach ($curl_options as $key => $value) {
curl_setopt($chandle, $key, $value);
}
$output = curl_exec($chandle);
$httpCode = curl_getinfo($chandle, CURLINFO_HTTP_CODE);
switch ($httpCode) {
case '400':
echo "Bad Request";
break;
case '401':
echo "Unauthorized";
break;
case '404':
echo "Not found";
break;
case '405':
echo "Method Not Allowed";
break;
case '406':
echo "Not Acceptable";
break;
case '415':
echo "Unsupported Media Type";
break;
case '500':
echo "Internal Server Error";
break;
}
if (curl_errno($chandle)) {
die("ERROR: " . curl_error($chandle));
}
curl_close($chandle);
}
示例2: onAfterProcess
/**
* 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
*
* @throws Exception
*
* @return bool
*/
public function onAfterProcess()
{
$params = $this->getParams();
$api_AUP = JPATH_SITE . '/components/com_alphauserpoints/helper.php';
if (JFile::exists($api_AUP)) {
$w = new FabrikWorker();
$this->data = $this->getProcessData();
require_once $api_AUP;
$aup = new AlphaUserPointsHelper();
// Define which user will receive the points.
$userId = $params->get('user_id', '');
$userId = (int) $w->parseMessageForPlaceholder($userId, $this->data, false);
$aupId = $aup->getAnyUserReferreID($userId);
// Replace these if you want to show a specific reference for the attributed points - doesn't seem to effect anything
$keyReference = '';
// Shown in the user details page - description of what the point is for
$dataReference = $params->get('data_reference', '');
$dataReference = $w->parseMessageForPlaceholder($dataReference, $this->data, false);
// Override the plugin default points
$randomPoints = $params->get('random_points', 0);
if ($params->get('random_points_eval', '0') == '1') {
if (!empty($randomPoints)) {
$randomPoints = $w->parseMessageForPlaceholder($randomPoints, $this->data, false);
$randomPoints = @eval($randomPoints);
FabrikWorker::logEval($randomPoints, 'Caught exception on eval in aup plugin : %s');
}
$randomPoints = (double) $randomPoints;
} else {
$randomPoints = (double) $w->parseMessageForPlaceholder($randomPoints, $this->data, false);
}
// If set to be greater than $randompoints then this is the # of points assigned (not sure when this would be used - commenting out for now)
$referralUserPoints = 0;
$aupPlugin = $params->get('aup_plugin', 'plgaup_fabrik');
$aupPlugin = $w->parseMessageForPlaceholder($aupPlugin, $this->data, false);
if (!$aup->checkRuleEnabled($aupPlugin, 0, $aupId)) {
throw new Exception('Alpha User Points plugin not published');
}
$aup->userpoints($aupPlugin, $aupId, $referralUserPoints, $keyReference, $dataReference, $randomPoints);
}
}
示例3: setAxisLabels
/**
* Set the axis label
*
* @return void
*/
protected function setAxisLabels()
{
$worker = new FabrikWorker();
$params = $this->getParams();
$this->axisLabels = (array) $params->get('fusionchart_axis_labels');
foreach ($this->axisLabels as $axis_key => $axis_val) {
$this->axisLabels[$axis_key] = $worker->parseMessageForPlaceholder($axis_val, null, false);
}
}
示例4: _fromEmailName
/**
* Get the email to name and email address
*
* @param array $data Placeholder replacement data
*
* @since 3.3.2
*
* @return array ($emailFrom, $fromName)
*/
private function _fromEmailName($data = array())
{
$w = new FabrikWorker();
$params = $this->getParams();
$fromUser = $params->get('emailtable_from_user');
if ($fromUser) {
$emailFrom = $this->user->get('email');
$fromName = $this->user->get('name');
} else {
$emailFrom = $params->get('email_from', $this->config->get('mailfrom'));
@(list($emailFrom, $fromName) = explode(':', $w->parseMessageForPlaceholder($emailFrom, $data, false), 2));
}
return array($emailFrom, $fromName);
}
示例5: log
//.........这里部分代码省略.........
$csvMsg[] = "UserAgent";
}
if ($params->get('compare_data') == 1) {
$csvMsg[] = "\"" . JText::_('COMPARE_DATA_LABEL_CSV') . "\"";
}
}
// Inserting data in CSV with actual line break as row separator
$csvMsg[] = "\n\"" . $date . "\"";
if ($params->get('logs_record_ip') == 1) {
$csvMsg[] = "\"" . $_SERVER['REMOTE_ADDR'] . "\"";
}
if ($params->get('logs_record_referer') == 1) {
$csvMsg[] = "\"" . $http_referrer . "\"";
}
if ($params->get('logs_record_useragent') == 1) {
$csvMsg[] = "\"" . $_SERVER['HTTP_USER_AGENT'] . "\"";
}
if ($params->get('compare_data') == 1) {
$csvMsg[] = "\"" . $result_compare . "\"";
}
$csvMsg = implode(",", $csvMsg);
if ($send_email) {
$email_msg = $csvMsg;
}
if ($make_file) {
if ($buffer !== '') {
$csvMsg = $buffer . $csvMsg;
}
JFile::write($logs_file, $csvMsg);
}
}
}
}
}
}
if ($params->get('logs_record_in_db') == 1) {
// In which table?
if ($params->get('record_in') == '') {
$rdb = '#__fabrik_log';
} else {
$db_suff = $params->get('record_in');
$form = $formModel->getForm();
$fid = $form->id;
$db->setQuery("SELECT " . $db->quoteName('db_table_name') . " FROM " . $db->quoteName('#__fabrik_lists') . " WHERE " . $db->quoteName('form_id') . " = " . (int) $fid);
$tname = $db->loadResult();
$rdb = $db->quoteName($tname . $db_suff);
}
// Making the message to record
if ($params->get('custom_msg') != '') {
$message = preg_replace('/<br\\/>/', ' ', $custom_msg);
} else {
$message = $this->makeStandardMessage($params, $result_compare);
}
// $$$ hugh - FIXME - not sure about the option driven $create_custom_table stuff, as this won't work
// if they add an option to an existing log table. We should probably just create all the optional columns
// regardless.
if ($params->get('record_in') == '') {
$in_db = "INSERT INTO {$rdb} (" . $db->quoteName('referring_url') . ", " . $db->quoteName('message_type') . ", " . $db->quoteName('message') . ") VALUES (" . $db->Quote($http_referrer) . ", " . $db->Quote($messageType) . ", " . $db->Quote($message) . ");";
$db->setQuery($in_db);
$db->query();
} else {
$create_custom_table = "CREATE TABLE IF NOT EXISTS {$rdb} (" . $db->quoteName('id') . " int(11) NOT NULL auto_increment PRIMARY KEY, {$clabels_createdb});";
$db->setQuery($create_custom_table);
$db->query();
$in_db = "INSERT INTO {$rdb} ({$clabels_db}) VALUES ({$cdata_db});";
$db->setQuery($in_db);
if (!$db->query()) {
// $$$ changed to always use db fields even if not selected
// so logs already created may need optional fields added.
// try adding every field we should have, don't care if query fails.
foreach ($clabelsCreateDb as $insert) {
$db->setQuery("ALTER TABLE ADD {$insert} AFTER `id`");
$db->query();
}
// ... and try the insert query again
$db->setQuery($in_db);
$db->query();
}
}
}
if ($send_email) {
jimport('joomla.mail.helper');
$config =& JFactory::getConfig();
$email_from = $config->getValue('mailfrom');
$email_to = explode(',', $w->parseMessageForPlaceholder($params->get('log_send_email_to', '')));
$subject = strip_tags($w->parseMessageForPlaceholder($params->get('log_send_email_subject', 'log event')));
foreach ($email_to as $email) {
$email = trim($email);
if (empty($email)) {
continue;
}
if (JMailHelper::isEmailAddress($email)) {
$res = JUtility::sendMail($email_from, $email_from, $email, $subject, $email_msg, true);
} else {
JError::raiseNotice(500, JText::sprintf('DID_NOT_SEND_EMAIL_INVALID_ADDRESS', $email));
}
}
}
return true;
}
示例6: getFusionchart
function getFusionchart()
{
$document =& JFactory::getDocument();
$params =& $this->getParams();
$worker = new FabrikWorker();
$fc_version = $params->get('fusionchart_version', 'free_old');
if ($fc_version == 'free_22') {
require_once $this->pathBase . 'fusionchart' . DS . 'lib' . DS . 'FusionChartsFree' . DS . 'Code' . DS . 'PHPClass' . DS . 'Includes' . DS . 'FusionCharts_Gen.php';
$document->addScript($this->srcBase . "fusionchart/lib/FusionChartsFree/JSClass/FusionCharts.js");
$fc_swf_path = COM_FABRIK_LIVESITE . $this->srcBase . "fusionchart/lib/FusionChartsFree/Charts/";
} else {
if ($fc_version == 'pro_30') {
require_once $this->pathBase . 'fusionchart' . DS . 'lib' . DS . 'FusionCharts' . DS . 'Code' . DS . 'PHPClass' . DS . 'Includes' . DS . 'FusionCharts_Gen.php';
$document->addScript($this->srcBase . "fusionchart/lib/FusionCharts/Charts/FusionCharts.js");
$fc_swf_path = COM_FABRIK_LIVESITE . $this->srcBase . "fusionchart/lib/FusionCharts/Charts/";
} else {
require_once $this->pathBase . 'fusionchart' . DS . 'lib' . DS . 'FCclass' . DS . 'FusionCharts_Gen.php';
$document->addScript($this->srcBase . "fusionchart/lib/FCcharts/FusionCharts.js");
$fc_swf_path = COM_FABRIK_LIVESITE . $this->srcBase . "fusionchart/lib/FCcharts/";
}
}
$calc_prefixes = array('sum___', 'avg___', 'med___', 'cnt___');
$calc_prefixmap = array('sum___' => 'sums', 'avg___' => 'avgs', 'med___' => 'medians', 'cnt___' => 'count');
$w = $params->get('fusionchart_width');
$h = $params->get('fusionchart_height');
$chartType = $params->get('fusionchart_type');
// Create new chart
$FC = new FusionCharts("{$chartType}", "{$w}", "{$h}");
//$FC->JSC["debugmode"]=true;
// Define path to FC's SWF
$FC->setSWFPath($fc_swf_path);
$this->setChartMessages($FC);
// Setting Param string
$strParam = $this->getChartParams();
$label_step_ratios = (array) $params->get('fusion_label_step_ratio');
$x_axis_label = (array) $params->get('fusion_x_axis_label');
$chartElements = (array) $params->get('fusionchart_elementList');
$chartColours = (array) $params->get('fusionchart_colours');
$listid = (array) $params->get('fusionchart_table');
$axisLabels = (array) $params->get('fusionchart_axis_labels');
foreach ($axisLabels as $axis_key => $axis_val) {
//$worker->replaceRequest($axis_val);
$axisLabels[$axis_key] = $worker->parseMessageForPlaceholder($axis_val, null, false);
}
$dual_y_parents = $params->get('fusionchart_dual_y_parent');
$measurement_units = (array) $params->get('fusion_x_axis_measurement_unit');
$legends = $params->get('fusiongraph_show_legend', '');
$chartWheres = (array) $params->get('fusionchart_where');
$c = 0;
$gdata = array();
$glabels = array();
$gcolours = array();
$gfills = array();
$max = array();
$min = array();
$calculationLabels = array();
$calculationData = array();
$calcfound = false;
$tmodels = array();
$labelStep = 0;
foreach ($listid as $tid) {
$min[$c] = 0;
$max[$c] = 0;
if (!array_key_exists($tid, $tmodels)) {
$listModel = null;
$listModel = JModel::getInstance('list', 'FabrikFEModel');
$listModel->setId($tid);
$tmodels[$tid] = $listModel;
} else {
$listModel = $tmodels[$tid];
}
$table = $listModel->getTable();
$form = $listModel->getForm();
// $$$ hugh - adding plugin query, 2012-02-08
if (array_key_exists($c, $chartWheres) && !empty($chartWheres[$c])) {
$chartWhere = $this->_replaceRequest($chartWheres[$c]);
$listModel->setPluginQueryWhere('fusionchart', $chartWhere);
} else {
// if no where clause, explicitly clear any previously set clause
$listModel->unsetPluginQueryWhere('fusionchart');
}
// $$$ hugh - remove pagination BEFORE calling render(). Otherwise render() applies
// session state/defaults when it calls getPagination, which is then returned as a cached
// object if we call getPagination after render(). So call it first, then render() will
// get our cached pagination, rather than vice versa.
$nav = $listModel->getPagination(0, 0, 0);
$listModel->render();
//$listModel->doCalculations();
$alldata = $listModel->getData();
$cals = $listModel->getCalculations();
$column = $chartElements[$c];
//$measurement_unit = $measurement_units[$c];
$measurement_unit = JArrayHelper::getValue($measurement_units, $c, '');
$pref = substr($column, 0, 6);
$label = JArrayHelper::getValue($x_axis_label, $c, '');
$tmpgdata = array();
$tmpglabels = array();
$colour = array_key_exists($c, $chartColours) ? str_replace("#", '', $chartColours[$c]) : '';
$gcolours[] = $colour;
if (in_array($pref, $calc_prefixes)) {
//.........这里部分代码省略.........
示例7: process
/**
* Do the plug-in action
*
* @param object $params plugin parameters
* @param object &$model list model
* @param array $opts custom options
*
* @return bool
*/
public function process($params, &$model, $opts = array())
{
$db = $model->getDb();
$user = JFactory::getUser();
$update = json_decode($params->get('update_col_updates'));
if (!$update) {
return false;
}
// $$$ rob moved here from bottom of func see http://fabrikar.com/forums/showthread.php?t=15920&page=7
$dateCol = $params->get('update_date_element');
$userCol = $params->get('update_user_element');
$item = $model->getTable();
// Array_unique for left joined table data
$ids = array_unique(JRequest::getVar('ids', array(), 'method', 'array'));
JArrayHelper::toInteger($ids);
$this->_row_count = count($ids);
$ids = implode(',', $ids);
$model->reset();
$model->_pluginQueryWhere[] = $item->db_primary_key . ' IN ( ' . $ids . ')';
$data = $model->getData();
// $$$servantek reordered the update process in case the email routine wants to kill the updates
$emailColID = $params->get('update_email_element', '');
if (!empty($emailColID)) {
$w = new FabrikWorker();
jimport('joomla.mail.helper');
$message = $params->get('update_email_msg');
$subject = $params->get('update_email_subject');
$eval = $params->get('eval', 0);
$config = JFactory::getConfig();
$from = $config->getValue('mailfrom');
$fromname = $config->getValue('fromname');
$elementModel = FabrikWorker::getPluginManager()->getElementPlugin($emailColID);
$emailElement = $elementModel->getElement(true);
$emailField = $elementModel->getFullName(false, true, false);
$emailColumn = $elementModel->getFullName(false, false, false);
$emailFieldRaw = $emailField . '_raw';
$emailWhich = $emailElement->plugin == 'user' ? 'user' : 'field';
$tbl = array_shift(explode('.', $emailColumn));
$db = JFactory::getDBO();
$aids = explode(',', $ids);
// If using a user element, build a lookup list of emails from #__users,
// so we're only doing one query to grab all involved emails.
if ($emailWhich == 'user') {
$userids_emails = array();
$query = $db->getQuery();
$query->select('#__users.id AS id, #__users.email AS email')->from('#__users')->join('LEFT', $tbl . ' ON #__users.id = ' . $emailColumn)->where(_primary_key . ' IN (' . $ids . ')');
$db->setQuery($query);
$results = $db->loadObjectList();
foreach ($results as $result) {
$userids_emails[(int) $result->id] = $result->email;
}
}
foreach ($aids as $id) {
$row = $model->getRow($id);
if ($emailWhich == 'user') {
$userid = (int) $row->{$emailFieldRaw};
$to = JArrayHelper::getValue($userids_emails, $userid);
} else {
$to = $row->{$emailField};
}
if (JMailHelper::cleanAddress($to) && JMailHelper::isEmailAddress($to)) {
// $tofull = '"' . JMailHelper::cleanLine($toname) . '" <' . $to . '>';
// $$$servantek added an eval option and rearranged placeholder call
$thissubject = $w->parseMessageForPlaceholder($subject, $row);
$thismessage = $w->parseMessageForPlaceholder($message, $row);
if ($eval) {
$thismessage = @eval($thismessage);
FabrikWorker::logEval($thismessage, 'Caught exception on eval in updatecol::process() : %s');
}
$res = JUtility::sendMail($from, $fromname, $to, $thissubject, $thismessage, true);
if ($res) {
$this->_sent++;
} else {
${$this}->_notsent++;
}
} else {
$this->_notsent++;
}
}
}
// $$$servantek reordered the update process in case the email routine wants to kill the updates
if (!empty($dateCol)) {
$date = JFactory::getDate();
$this->_process($model, $dateCol, $date->toSql());
}
if (!empty($userCol)) {
$this->_process($model, $userCol, (int) $user->get('id'));
}
foreach ($update->coltoupdate as $i => $col) {
$this->_process($model, $col, $update->update_value[$i]);
}
//.........这里部分代码省略.........
示例8: process
/**
* do the plugin action
* @param object parameters
* @param object table model
*/
function process(&$params, &$model, $opts = array())
{
$db =& $model->getDb();
$user =& JFactory::getUser();
$updateTo = $params->get('update_value');
$updateCol = $params->get('coltoupdate');
$updateTo_2 = $params->get('update_value_2');
$updateCol_2 = $params->get('coltoupdate_2');
// $$$ rob moved here from bottom of func see http://fabrikar.com/forums/showthread.php?t=15920&page=7
$tbl = array_shift(explode('.', $updateCol));
$dateCol = $params->get('update_date_element');
$userCol = $params->get('update_user_element');
$table =& $model->getTable();
// array_unique for left joined table data
$ids = array_unique(JRequest::getVar('ids', array(), 'method', 'array'));
JArrayHelper::toInteger($ids);
$this->_row_count = count($ids);
$ids = implode(',', $ids);
$model->_pluginQueryWhere[] = $table->db_primary_key . ' IN ( ' . $ids . ')';
$data =& $model->getData();
//$$$servantek reordered the update process in case the email routine wants to kill the updates
$emailColID = $params->get('update_email_element', '');
if (!empty($emailColID)) {
$w = new FabrikWorker();
jimport('joomla.mail.helper');
$message = $params->get('update_email_msg');
$subject = $params->get('update_email_subject');
$eval = $params->get('eval', 0);
$config =& JFactory::getConfig();
$from = $config->getValue('mailfrom');
$fromname = $config->getValue('fromname');
$elementModel =& JModel::getInstance('element', 'FabrikModel');
$elementModel->setId($emailColID);
$emailElement =& $elementModel->getElement(true);
$emailField = $elementModel->getFullName(false, true, false);
$emailColumn = $elementModel->getFullName(false, false, false);
$emailFieldRaw = $emailField . '_raw';
$emailWhich = $emailElement->plugin == 'fabrikuser' ? 'user' : 'field';
$db =& JFactory::getDBO();
$aids = explode(',', $ids);
// if using a user element, build a lookup list of emails from jos_users,
// so we're only doing one query to grab all involved emails.
if ($emailWhich == 'user') {
$userids_emails = array();
$query = 'SELECT #__users.id AS id, #__users.email AS email FROM #__users LEFT JOIN ' . $tbl . ' ON #__users.id = ' . $emailColumn . ' WHERE ' . $table->db_primary_key . ' IN (' . $ids . ')';
$db->setQuery($query);
$results = $db->loadObjectList();
foreach ($results as $result) {
$userids_emails[(int) $result->id] = $result->email;
}
}
foreach ($aids as $id) {
$row = $model->getRow($id);
if ($emailWhich == 'user') {
$userid = (int) $row->{$emailFieldRaw};
$to = $userids_emails[$userid];
} else {
$to = $row->{$emailField};
}
if (JMailHelper::cleanAddress($to) && JMailHelper::isEmailAddress($to)) {
//$tofull = '"' . JMailHelper::cleanLine($toname) . '" <' . $to . '>';
//$$$servantek added an eval option and rearranged placeholder call
$thissubject = $w->parseMessageForPlaceholder($subject, $row);
$thismessage = $w->parseMessageForPlaceholder($message, $row);
if ($eval) {
$thismessage = @eval($thismessage);
FabrikWorker::logEval($thismessage, 'Caught exception on eval in updatecol::process() : %s');
}
$res = JUtility::sendMail($from, $fromname, $to, $thissubject, $thismessage, true);
if ($res) {
$this->_sent++;
} else {
${$this}->_notsent++;
}
} else {
$this->_notsent++;
}
}
}
//$$$servantek reordered the update process in case the email routine wants to kill the updates
if (!empty($dateCol)) {
$date =& JFactory::getDate();
$this->_process($model, $dateCol, $date->toMySQL());
}
if (!empty($userCol)) {
$this->_process($model, $userCol, (int) $user->get('id'));
}
$this->_process($model, $updateCol, $updateTo);
if (!empty($updateCol_2)) {
$this->_process($model, $updateCol_2, $updateTo_2);
}
// $$$ hugh - this stuff has to go in process_result()
//$msg = $params->get( 'update_message' );
//return JText::sprintf( $msg, count($ids));
$this->msg = $params->get('update_message', '');
//.........这里部分代码省略.........
示例9: updateFormModelData
/**
* Update the form models data with data from CURL request
*
* @param Joomla\Registry\Registry $params Parameters
* @param array $responseBody Response body
* @param array $data Data returned from CURL request
*
* @return void
*/
protected function updateFormModelData($params, $responseBody, $data)
{
$w = new FabrikWorker();
$dataMap = $params->get('put_include_list', '');
$include = $w->parseMessageForPlaceholder($dataMap, $responseBody, true);
$formModel = $this->getModel();
if (FabrikWorker::isJSON($include)) {
$include = json_decode($include);
$keys = $include->put_key;
$values = $include->put_value;
$defaults = $include->put_value;
for ($i = 0; $i < count($keys); $i++) {
$key = $keys[$i];
$default = $defaults[$i];
$localKey = FabrikString::safeColNameToArrayKey($values[$i]);
$remoteData = FArrayHelper::getNestedValue($data, $key, $default, true);
if (!is_null($remoteData)) {
$formModel->_data[$localKey] = $remoteData;
}
}
}
}
示例10: onAfterProcess
/**
* process the plugin, called when form is submitted
*
* @param object $params
* @param object form model
* @returns bol
*/
function onAfterProcess($params, &$formModel)
{
jimport('joomla.mail.helper');
$user =& JFactory::getUser();
$config =& JFactory::getConfig();
$db =& JFactory::getDBO();
$this->formModel =& $formModel;
$formParams = $formModel->getParams();
$ftpTemplate = JPath::clean(JPATH_SITE . DS . 'components' . DS . 'com_fabrik' . DS . 'plugins' . DS . 'form' . DS . 'fabrikftp' . DS . 'tmpl' . DS . $params->get('ftp_template', ''));
$this->data = array_merge($formModel->_formData, $this->getEmailData());
if (!$this->shouldProcess('ftp_conditon')) {
return;
}
$contentTemplate = $params->get('ftp_template_content');
if ($contentTemplate != '') {
$content = $this->_getConentTemplate($contentTemplate);
} else {
$content = '';
}
if (JFile::exists($ftpTemplate)) {
if (JFile::getExt($ftpTemplate) == 'php') {
$message = $this->_getPHPTemplateFtp($ftpTemplate);
} else {
$message = $this->_getTemplateFtp($ftpTemplate);
}
$message = str_replace('{content}', $content, $message);
} else {
if ($contentTemplate != '') {
$message = $content;
} else {
$message = $this->_getTextFtp();
}
}
$cc = null;
$bcc = null;
$w = new FabrikWorker();
// $$$ hugh - test stripslashes(), should be safe enough.
$message = stripslashes($message);
$editURL = COM_FABRIK_LIVESITE . "index.php?option=com_fabrik&view=form&fabrik=" . $formModel->get('id') . "&rowid=" . JRequest::getVar('rowid');
$viewURL = COM_FABRIK_LIVESITE . "index.php?option=com_fabrik&view=details&fabrik=" . $formModel->get('id') . "&rowid=" . JRequest::getVar('rowid');
$editlink = "<a href=\"{$editURL}\">" . JText::_('EDIT') . "</a>";
$viewlink = "<a href=\"{$viewURL}\">" . JText::_('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);
$ftp_filename = $params->get('ftp_filename', '');
$ftp_filename = $w->parseMessageForPlaceholder($ftp_filename, $this->data, false);
$ftp_eval_filename = (int) $params->get('ftp_eval_filename', '0');
if ($ftp_eval_filename) {
$ftp_filename = @eval($ftp_filename);
FabrikWorker::logEval($email_to_eval, 'Caught exception on eval in ftp filename eval : %s');
}
if (empty($ftp_filename)) {
JError::raiseNotice(500, JText::sprintf('PLG_FTP_NO_FILENAME', $email));
}
$ftp_host = $w->parseMessageForPlaceholder($params->get('ftp_host', ''), $this->data, false);
$ftp_port = $w->parseMessageForPlaceholder($params->get('ftp_port', '21'), $this->data, false);
$ftp_chdir = $w->parseMessageForPlaceholder($params->get('ftp_chdir', ''), $this->data, false);
$ftp_user = $w->parseMessageForPlaceholder($params->get('ftp_user', ''), $this->data, false);
$ftp_password = $w->parseMessageForPlaceholder($params->get('ftp_password', ''), $this->data, false);
$config =& JFactory::getConfig();
$tmp_dir = rtrim($config->getValue('config.tmp_path'), DS);
if (empty($tmp_dir) || !JFolder::exists($tmp_dir)) {
JError::raiseError(500, 'PLG_FORM_FTP_NO_JOOMLA_TEMP_DIR');
return false;
}
$tmp_file = $tmp_dir . DS . 'fabrik_ftp_' . md5(uniqid());
$message = $w->parseMessageForPlaceholder($message, $this->data, true, false);
if (JFile::write($tmp_file, $message)) {
$conn_id = ftp_connect($ftp_host, $ftp_port);
if ($conn_id) {
if (@ftp_login($conn_id, $ftp_user, $ftp_password)) {
if (!empty($ftp_chdir)) {
if (!ftp_chdir($conn_id, $ftp_chdir)) {
JError::raiseNotice(500, JText::_('PLG_FORM_FTP_COULD_NOT_CHDIR'));
JFile::delete($tmp_file);
return false;
}
}
if (!ftp_put($conn_id, $ftp_filename, $tmp_file, FTP_ASCII)) {
JError::raiseNotice(500, JText::_('PLG_FORM_FTP_COULD_NOT_SEND_FILE'));
JFile::delete($tmp_file);
return false;
}
} else {
JError::raiseNotice(500, JText::_('PLG_FORM_FTP_COULD_NOT_LOGIN'));
JFile::delete($tmp_file);
return false;
}
} else {
JError::raiseError(500, 'PLG_FORM_FTP_COULD_NOT_CONNECT');
JFile::delete($tmp_file);
//.........这里部分代码省略.........
示例11: addAttachments
/**
* Add attachments to the email
*
* @return void
*/
protected function addAttachments()
{
$params = $this->getParams();
$data = $this->getProcessData();
/** @var FabrikFEModelForm $formModel */
$formModel = $this->getModel();
$groups = $formModel->getGroupsHiarachy();
foreach ($groups as $groupModel) {
$elementModels = $groupModel->getPublishedElements();
foreach ($elementModels as $elementModel) {
$elName = $elementModel->getFullName(true, false);
if (array_key_exists($elName, $this->data)) {
if (method_exists($elementModel, 'addEmailAttachement')) {
if (array_key_exists($elName . '_raw', $data)) {
$val = $data[$elName . '_raw'];
} else {
$val = $data[$elName];
}
if (is_array($val)) {
if (is_array(current($val))) {
// Can't implode multi dimensional arrays
$val = json_encode($val);
$val = FabrikWorker::JSONtoData($val, true);
}
} else {
$val = array($val);
}
foreach ($val as $v) {
$file = $elementModel->addEmailAttachement($v);
if ($file !== false) {
$this->attachments[] = $file;
if ($elementModel->shouldDeleteEmailAttachment($v)) {
$this->deleteAttachments[] = $file;
}
}
}
}
}
}
}
// $$$ hugh - added an optional eval for adding attachments.
// Eval'd code should just return an array of file paths which we merge with $this->attachments[]
$w = new FabrikWorker();
$emailAttachEval = $w->parseMessageForPlaceholder($params->get('email_attach_eval', ''), $this->data, false);
if (!empty($emailAttachEval)) {
$email_attach_array = @eval($emailAttachEval);
FabrikWorker::logEval($email_attach_array, 'Caught exception on eval in email email_attach_eval : %s');
if (!empty($email_attach_array)) {
$this->attachments = array_merge($this->attachments, $email_attach_array);
}
}
}
示例12: sendEmails
/**
* Send notification emails
*
* @param string $ids csv list of row ids.
*
* @return void
*/
protected function sendEmails($ids)
{
$params = $this->getParams();
$model = $this->getModel();
// Ensure that yesno exports text and not bootstrap icon.
$model->setOutputFormat('csv');
$emailColID = $params->get('update_email_element', '');
$emailTo = $params->get('update_email_to', '');
if (!empty($emailColID) || !empty($emailTo)) {
$w = new FabrikWorker();
jimport('joomla.mail.helper');
$aids = explode(',', $ids);
$message = $params->get('update_email_msg');
$subject = $params->get('update_email_subject');
$eval = $params->get('eval', 0);
$from = $this->config->get('mailfrom');
$fromName = $this->config->get('fromname');
$emailWhich = $this->emailWhich();
foreach ($aids as $id) {
$row = $model->getRow($id, true);
/**
* hugh - hack to work around this issue:
* https://github.com/Fabrik/fabrik/issues/1499
*/
$this->params = $params;
$to = trim($this->emailTo($row, $emailWhich));
$tos = explode(',', $to);
$cleanTo = true;
foreach ($tos as &$email) {
$email = trim($email);
if (!(JMailHelper::cleanAddress($email) && FabrikWorker::isEmail($email))) {
$cleanTo = false;
}
}
if ($cleanTo) {
if (count($tos) > 1) {
$to = $tos;
}
$thisSubject = $w->parseMessageForPlaceholder($subject, $row);
$thisMessage = $w->parseMessageForPlaceholder($message, $row);
if ($eval) {
$thisMessage = @eval($thisMessage);
FabrikWorker::logEval($thisMessage, 'Caught exception on eval in updatecol::process() : %s');
}
$mail = JFactory::getMailer();
$res = $mail->sendMail($from, $fromName, $to, $thisSubject, $thisMessage, true);
if ($res) {
$this->sent++;
} else {
$this->notsent++;
}
} else {
$this->notsent++;
}
}
}
}
示例13: onAfterProcess
function onAfterProcess(&$params, &$formModel)
{
$w = new FabrikWorker();
$config_userpass = $params->get('username') . ':' . $params->get('password');
$endpoint = $params->get('endpoint');
$headers = array('Content-Type: application/xml', 'Accept: application/xml');
$endpoint = $params->get('endpoint');
$endpoint = $w->parseMessageForPlaceholder($endpoint);
// Here we set up CURL to grab the data from Unfuddle
$chandle = curl_init();
$ticket = new SimpleXMLElement("<ticket></ticket>");
$ignore = array('trkr_tickets___id');
if ($formModel->_origRowId == 0) {
$ingore[] = 'id';
}
/*foreach($formModel->_formData as $key => $val){
if ($formModel->hasElement($key) && !in_array($key, $ignore)) {
if (is_array($val)) {
$val = implode(',', $val);
}
$ticket->addChild($key, $val);
}
}
*/
/*
* $ticket = new SimpleXMLElement("<ticket></ticket>");
//$ticket->addChild('assignee-id', $this->config['default_assignee']);
//$ticket->addChild('component-id', $data['component']);
//$ticket->addChild('description', $data['description']);
$ticket->addChild('milestone-id', 47420);
//$ticket->addChild('priority', $data['priority']);
//$ticket->addChild('severity-id', $data['severity']);
$ticket->addChild('status', 'new');
$ticket->addChild('summary', 'test REST API from fabrik');
*/
$include = array('milestone-id', 'status', 'summary');
foreach ($include as $i) {
echo "{$i} = " . $formModel->_formData[$i] . "<br>";
$ticket->addChild($i, $formModel->_formData[$i]);
}
$output = $ticket->asXML();
$curl_options = array(CURLOPT_URL => $endpoint, CURLOPT_RETURNTRANSFER => 1, CURLOPT_HTTPHEADER => $headers, CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $output, CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_USERPWD => $config_userpass, CURLOPT_CUSTOMREQUEST => 'POST');
foreach ($curl_options as $key => $value) {
curl_setopt($chandle, $key, $value);
}
$output = curl_exec($chandle);
$httpCode = curl_getinfo($chandle, CURLINFO_HTTP_CODE);
echo $httpCode . " : ";
switch ($httpCode) {
case '400':
echo "Bad Request";
break;
case '401':
echo "Unauthorized";
break;
case '404':
echo "Not found";
break;
case '405':
echo "Method Not Allowed";
break;
case '406':
echo "Not Acceptable";
break;
case '415':
echo "Unsupported Media Type";
break;
case '500':
echo "Internal Server Error";
break;
}
if (curl_errno($chandle)) {
die("ERROR: " . curl_error($chandle));
}
curl_close($chandle);
exit;
}
示例14: upsertData
/**
* Get fields to update/insert
*
* @param bool $upsertRowExists
*
* @return array
*/
protected function upsertData($upsertRowExists = false)
{
$params = $this->getParams();
$w = new FabrikWorker();
$upsertDb = $this->getDb();
$upsert = json_decode($params->get('upsert_fields'));
$fields = array();
/** @var FabrikFEModelForm $formModel */
$formModel = $this->getModel();
if ($formModel->isNewRecord() || !$upsertRowExists) {
if ($params->get('upsert_pk_or_fk', 'pk') == 'fk') {
$row_value = $params->get('row_value', '');
if ($row_value == '{origid}') {
$fk = FabrikString::safeColName($params->get('primary_key'));
$rowId = $formModel->getInsertId();
$fields[] = $fk . ' = ' . $upsertDb->q($rowId);
}
}
}
for ($i = 0; $i < count($upsert->upsert_key); $i++) {
$k = FabrikString::shortColName($upsert->upsert_key[$i]);
$k = $upsertDb->qn($k);
$v = $upsert->upsert_value[$i];
$v = $w->parseMessageForPlaceholder($v, $this->data);
if ($upsert->upsert_eval_value[$i] === '1') {
$res = FabrikHelperHTML::isDebug() ? eval($v) : @eval($v);
FabrikWorker::logEval($res, 'Eval exception : upsert : ' . $v . ' : %s');
$v = $res;
}
if ($v == '') {
$v = $w->parseMessageForPlaceholder($upsert->upsert_default[$i], $this->data);
}
/*
* $$$ hugh - permit the use of expressions, by putting the value in parens, with option use
* of double :: to provide a default for new row (rowid is empty). This default is seperate from
* the simple default used above, which is predicated on value being empty. So simple usage
* might be ..
*
* (counter+1::0)
*
* ... if you want to increment a 'counter' field. Or you might use a subquery, like ...
*
* ((SELECT foo FROM other_table WHERE fk_id = {rowid})::'foo default')
*/
if (!preg_match('#^\\((.*)\\)$#', $v)) {
$v = $upsertDb->q($v);
} else {
$matches = array();
preg_match('#^\\((.*)\\)$#', $v, $matches);
$v = $matches[1];
$v = explode('::', $v);
if (count($v) == 1) {
$v = $v[0];
} else {
if ($formModel->isNewRecord()) {
$v = $v[1];
} else {
$v = $v[0];
}
}
}
$fields[] = $k . ' = ' . $v;
}
return $fields;
}
示例15: doEmail
//.........这里部分代码省略.........
$first_row = array();
foreach ($data as $group) {
foreach ($group as $row) {
if ($merge_emails) {
if (empty($first_row)) {
$first_row = $row;
// used for placeholders in subject when merging mail
}
$thismsg = '';
if ($old_style) {
$thismsg = $w->parseMessageForPlaceHolder($cover_message, $row);
} else {
if ($php_msg) {
$thismsg = $this->_getPHPTemplateEmail($emailTemplate, $row, $tableModel);
} else {
$thismsg = $w->parseMessageForPlaceHolder($message, $row);
}
}
$merged_msg .= $thismsg;
$updated[] = $row->__pk_val;
} else {
if ($toType == 'list') {
$process = isset($row->{$to});
$mailto = $row->{$to};
} else {
$process = true;
$mailto = $to;
}
if ($process) {
$res = false;
$mailtos = explode(',', $mailto);
if ($toHow == 'single') {
foreach ($mailtos as $tokey => $thisto) {
$thisto = $w->parseMessageForPlaceholder($thisto, $row);
if (!JMailHelper::isEmailAddress($thisto)) {
unset($mailtos[$tokey]);
$notsent++;
} else {
$mailtos[$tokey] = $thisto;
}
}
if ($notsent > 0) {
$mailtos = array_values($mailtos);
}
$sent = sizeof($mailtos);
if ($sent > 0) {
$thissubject = $w->parseMessageForPlaceholder($subject, $row);
$thismsg = '';
$thismsg = $cover_message;
if (!$old_style) {
if ($php_msg) {
$thismsg .= $this->_getPHPTemplateEmail($emailTemplate, $row, $tableModel);
} else {
$thismsg .= $message;
}
}
$thismsg = $w->parseMessageForPlaceholder($thismsg, $row);
$res = JUtility::sendMail($email_from, $fromname, $mailtos, $thissubject, $thismsg, 1, $cc, $bcc, $this->filepath);
}
} else {
foreach ($mailtos as $mailto) {
$mailto = $w->parseMessageForPlaceholder($mailto, $row);
if (JMailHelper::isEmailAddress($mailto)) {
$thissubject = $w->parseMessageForPlaceholder($subject, $row);
$thismsg = '';
$thismsg = $cover_message;