function loadAction($form, $actiondata) { $params = new JParameter($actiondata->params); $output = ''; $mainframe =& JFactory::getApplication(); $document =& JFactory::getDocument(); JHTML::_('behavior.mootools'); $uri =& JFactory::getURI(); $CF_PATH = $mainframe->isSite() ? JURI::Base() : $uri->root(); $document->addScript($CF_PATH . 'administrator/components/com_chronoforms/form_actions/auto_javascript_validation/assets/auto_javascript_validation.js'); $rules = array('required', 'alpha', 'alphanum', 'digit', 'nodigit', 'number', 'email', 'phone', 'phone_inter', 'url', 'image'); ob_start(); ?> window.addEvent('domready', function() { <?php $object_list = array(); foreach ($rules as $rule) { $fields_list = array(); if (trim($params->get($rule, ''))) { $fields_list = explode(',', trim($params->get($rule, ''))); } foreach ($fields_list as $k => $field) { $fields_list[$k] = "'" . $field . "'"; } $n_fields_list = implode(',', $fields_list); $object_list[] = "'" . $rule . "': [" . $n_fields_list . "]"; } ?> new AutoJavascriptValidation('<?php echo $form->form_name; ?> ', <?php echo "{" . implode(",", $object_list) . "}"; ?> ); }); <?php $script = ob_get_clean(); if ((bool) $form->form_params->get('dynamic_files', 0) === false) { $document->addScriptDeclaration("//<![CDATA[" . "\n" . $script . "\n" . "//]]>"); } else { //load the action class $form->loadActionHelper('load_js'); $CfactionLoadJsHelper = new CfactionLoadJsHelper(); $JSactiondata = new stdClass(); $JSactiondata->content1 = $script; $JSParams = new JParameter(''); $JSParams->set('dynamic_file', $form->form_params->get('dynamic_files', 0)); $JSactiondata->params = $JSParams->toString(); $CfactionLoadJsHelper->load($form, $JSactiondata); } //load validation files $form->loadActionHelper('show_html'); $CfactionShowHtmlHelper = new CfactionShowHtmlHelper(); $CfactionShowHtmlHelper->_loadValidationScripts($form); }
function run($form, $actiondata) { $params = new JParameter($actiondata->params); $table_name = $params->get('table_name', ''); if (!empty($table_name) && (int) $params->get('load_data', 1) == 1) { $mainframe =& JFactory::getApplication(); $database =& JFactory::getDBO(); $table_field = $params->get('dbfield', ''); if (trim($actiondata->content1)) { $where = " WHERE " . $this->_processWhere(trim($actiondata->content1), $form); } else { if (!empty($table_field)) { $where = " WHERE `" . $params->get('dbfield', '') . "` = '" . $form->data[$params->get('request_param', '')] . "'"; } else { $where = ""; } } //load the model_id $model_id_sub = preg_replace('/(?:^|_)(.?)/e', "strtoupper('\$1')", $table_name); $model_id = $params->get('model_id', ''); if (empty($model_id)) { $model_id = $model_id_sub; } //check fields $fields = array(); if (trim($params->get('fields', ''))) { $fields_list = explode(",", trim($params->get('fields', ''))); foreach ($fields_list as $field) { $fields[] = "`" . $field . "`"; } } else { $fields = array("`" . $model_id . "`.*"); } //check the association $assoc = ''; $assoc_models = array(); $primaries = array(); if ($params->get('enable_association', 0) == 1 && $params->get('load_data', 1) == 1) { if (trim($params->get('associated_models', ''))) { //add primary key for the main table $fields_list = $database->getTableFields(array(trim($params->get('table_name', ''))), false); $table_fields = $fields_list[trim($params->get('table_name', ''))]; foreach ($table_fields as $table_field => $field_data) { if ($field_data->Key == 'PRI') { $primaries[$model_id] = $table_field; } } //find associated models list $assoc_models = explode(',', $params->get('associated_models')); foreach ($assoc_models as $k => $assoc_model) { $assoc_models[$k] = trim($assoc_model); } //find other multi record loaders $models_list = array(); foreach ($form->form_actions as $form_action) { if ($form_action->type == 'db_multi_record_loader') { $action_params = new JParameter($form_action->params); if (trim($action_params->get('model_id', '')) && trim($action_params->get('table_name', ''))) { $models_list[trim($action_params->get('model_id', ''))] = trim($action_params->get('table_name', '')); if (in_array(trim($action_params->get('model_id', '')), $assoc_models)) { //find some table info (primary key) $fields_list = $database->getTableFields(array(trim($action_params->get('table_name', ''))), false); $table_fields = $fields_list[trim($action_params->get('table_name', ''))]; foreach ($table_fields as $table_field => $field_data) { if ($field_data->Key == 'PRI') { $primaries[trim($action_params->get('model_id', ''))] = $table_field; } } //get table fields list if (trim($action_params->get('fields', ''))) { $table_fields = explode(",", trim($action_params->get('fields', ''))); foreach ($table_fields as $table_field) { $table_field = trim($table_field); $field_alias = "`" . trim($action_params->get('model_id', '')) . "." . $table_field . "`"; $field_name = "`" . trim($action_params->get('model_id', '')) . "`.`" . $table_field . "`"; $fields[] = $field_name . " AS " . $field_alias; } } else { foreach ($table_fields as $table_field => $field_data) { $fields[] = "`" . trim($action_params->get('model_id', '')) . "`.`" . $table_field . "` AS `" . trim($action_params->get('model_id', '')) . "." . $table_field . "`"; } } //append any WHERE data if (trim($form_action->content1)) { if (!empty($where)) { $where .= " AND " . $this->_processWhere($form_action->content1); } else { $where = " WHERE " . $this->_processWhere($form_action->content1); } } } } } } //build the JOIN statement foreach ($assoc_models as $assoc_model) { if (isset($models_list[$assoc_model])) { $assoc .= " INNER JOIN `" . $models_list[$assoc_model] . "` AS `" . $assoc_model . "`"; } } } } //add the page navigation data if ((bool) $params->get('enable_pagination', 0) === true) { $option = 'com_chronoforms.db_multi_record_loader.' . $actiondata->id; $session =& JFactory::getSession(); if (isset($form->data['limit'])) { $session->set($option . '.limit', (int) $form->data['limit'], md5('chrono')); } $limit = $mainframe->getUserStateFromRequest($option . '.limit', 'limit', $session->get($option . '.limit', (int) $params->get('pagination_limit', 50), md5('chrono')), 'int'); $limitstart = $mainframe->getUserStateFromRequest($option . '.limitstart', 'limitstart', 0, 'int'); $sql = "SELECT count(*) FROM `" . $params->get('table_name', '') . "` AS `" . $model_id . "`" . $assoc . $where; $database->setQuery($sql); $total = $database->loadResult(); jimport('joomla.html.pagination'); $pageNav = new JPagination($total, $limitstart, $limit); //get current page url //load show_html action helper class $form->loadActionHelper('show_html'); $url = CfactionShowHtmlHelper::selfURL(); if ($form->admin === false) { $form->paginatior_footer = '<form action="' . $url . '" method="post" name="chronoform_pagination_' . $actiondata->id . '" id="chronoform_pagination_' . $actiondata->id . '">'; } else { $form->paginatior_footer = '<form action="' . $url . '" method="post" name="adminForm" id="adminForm">'; } $form->paginatior_footer .= $pageNav->getListFooter(); $form->paginatior_footer .= '</form>'; //check order data $order = ''; if (isset($form->data['order'])) { $order = ' ORDER BY `' . trim($form->data['order']) . '`' . (isset($form->data['direction']) ? ' ' . $form->data['direction'] : ' ASC'); } $sql = "SELECT " . implode(", ", $fields) . " FROM `" . $params->get('table_name', '') . "` AS `" . $model_id . "`" . $assoc . $where . $order . " LIMIT {$pageNav->limitstart},{$pageNav->limit}"; } else { $sql = "SELECT " . implode(", ", $fields) . " FROM `" . $params->get('table_name', '') . "` AS `" . $model_id . "`" . $assoc . $where; } //echo $form->paginatior_footer; //run the sql and get the data $database->setQuery($sql); $data = $database->loadAssocList(); //process the data if association was enabled if (!empty($assoc_models) && !empty($data)) { foreach ($data as $datak => $datav) { if (is_array($datav)) { foreach ($datav as $k => $v) { if (strpos($k, '.')) { $details = explode('.', $k); $data[$datak][$details[0]][$details[1]] = $v; unset($data[$datak][$k]); } } } } if ((int) $params->get('group_model_data', 1) == 1) { $data = $this->group_model_data($data, $model_id, $primaries); } } //print_r2($data); //data must be loaded under some model id $form->data[$model_id] = $data; //check the result //$request_val = $form->data[$params->get('request_param', '')]; if (empty($data)) { $this->events['notfound'] = 1; } else { $this->events['found'] = 1; } //print_r2($form->data); } }
function load($form = null, $actiondata = null) { $params = new JParameter($actiondata->params); $output = ''; if ((bool) $params->get('enable_data_displayer', 0) === true && $params->get('load_type', 'all') == 'all') { //find the model data $table_name = $params->get('table_name', ''); $model_id_sub = preg_replace('/(?:^|_)(.?)/e', "strtoupper('\$1')", $table_name); $model_id = $params->get('model_id', ''); if (empty($model_id)) { $model_id = $model_id_sub; } //pre output creation $fields_names = array(); $fields_headings = array(); $order_fields = array(); //get order fields $order_str = trim($params->get('data_order_fields', '')); if (!empty($order_str)) { $order_fields = explode(",", trim($params->get('data_order_fields', ''))); } //get display fields $fields_data = trim($params->get('data_display_fields', '')); if (!empty($fields_data)) { $fields_data = explode(",", $fields_data); foreach ($fields_data as $field_data) { $field_data = explode(":", trim($field_data)); $fields_names[] = $field_name = $field_data[0]; if (!isset($field_data[1])) { $field_data[1] = strtoupper($field_data[0]); } $fields_headings[] = $field_heading = $field_data[1]; } } //create the table code $output .= '<table id="db_multi_record_loader_' . $actiondata->id . '">'; $output .= '<thead>'; $output .= '<tr>'; $form->loadActionHelper('show_html'); $showHTMLHelper = new CfactionShowHtmlHelper(); foreach ($fields_headings as $k => $field_heading) { if (in_array($fields_names[$k], $order_fields)) { $direction = 'asc'; if (isset($form->data['order']) && $form->data['order'] == $fields_names[$k] && isset($form->data['direction'])) { if ($form->data['direction'] == 'asc') { $direction = 'desc'; } else { $direction = 'asc'; } } $class = ''; if (isset($form->data['order']) && $form->data['order'] == $fields_names[$k]) { $class = ' direction_' . (isset($form->data['direction']) ? $form->data['direction'] : 'asc'); } $field_heading = '<a class="order_link' . $class . '" href="' . $showHTMLHelper->generateURL($showHTMLHelper->selfURL(), array('order' => $fields_names[$k], 'direction' => $direction)) . '">' . $field_heading . '</a>'; } else { $field_heading = $field_heading; } $output .= '<th class="col' . ($k + 1) . ' cell">' . $field_heading . '</th>'; } $output .= '</tr>'; $output .= '</thead>'; $output .= '<tbody>'; $i = 0; if (!empty($form->data[$model_id])) { foreach ($form->data[$model_id] as $r => $record) { $output .= '<tr class="row_' . $i . '">'; foreach ($fields_names as $k => $field_name) { if (strpos($field_name, '.') !== false) { $record[$field_name] = $form->get_array_value($record, explode('.', $field_name)); } $output .= '<td class="col' . ($k + 1) . ' cell">' . $record[$field_name] . '</td>'; } $output .= '</tr>'; $i = 1 - $i; } } $output .= '</tbody>'; $output .= '</table>'; } if ((bool) $params->get('enable_pagination', 0) === true && isset($form->paginatior_footer)) { //check the position of the pagination if ((int) $params->get('enable_pagination', 0) == 1) { $output = $form->paginatior_footer . $output; } else { if ((int) $params->get('enable_pagination', 0) == 2) { $output = $output . $form->paginatior_footer; } } } //add CSS $this->_addCSS($form, $actiondata); //end echo $output; }