function getCellTemplate($column, $fieldId, $value = null, $permissions = array('view' => 1, 'edit' => 1)) { $element = df_clone($this->elements[$column]); $element->setName($this->name . '[' . $this->next_row_id . '][' . $column . ']'); $element->updateAttributes(array('id' => $column . '_' . $fieldId, 'onchange' => (($this->addNew or $this->addExisting) ? 'dataGridFieldFunctions.addRowOnChange(this);' : '') . $element->getAttribute('onchange'), 'style' => 'width:100%;' . $element->getAttribute('style'))); if ($this->isFrozen() or !Dataface_PermissionsTool::checkPermission('edit', $permissions)) { $element->freeze(); } else { $element->unfreeze(); } if (isset($value)) { $element->setValue($value); } return $element->toHtml(); }
function test_basic_check_array() { $pt =& Dataface_PermissionsTool::getInstance(); $this->assertTrue($pt->checkPermission('view', array('view' => 'View'))); $this->assertTrue(Dataface_PermissionsTool::checkPermission('view', array('view' => 'View'))); $this->assertTrue(!$pt->checkPermission('view', array())); $this->assertTrue(!Dataface_PermissionsTool::checkPermission('view', array())); $this->assertTrue($pt->checkPermission('edit', array('view' => 'View', 'edit' => 'Edit'))); $perms = array('view' => 'View'); $this->assertTrue($pt->view($perms)); $perms = array('view' => 'View'); $this->assertTrue(Dataface_PermissionsTool::view($perms)); $perms = array('edit' => 'Edit'); $this->assertTrue(!$pt->view($perms)); $perms = array('edit' => 'Edit'); $this->assertTrue(!Dataface_PermissionsTool::view($perms)); $this->assertTrue($pt->edit($perms)); $this->assertTrue(Dataface_PermissionsTool::edit($perms)); $perms = array('delete' => 'Delete'); $this->assertTrue(!$pt->edit($perms)); $this->assertTrue(!Dataface_PermissionsTool::edit($perms)); $this->assertTrue($pt->delete($perms)); $this->assertTrue(Dataface_PermissionsTool::delete($perms)); }
function toHtml() { $app =& Dataface_Application::getInstance(); $query =& $app->getQuery(); if (isset($query['-sort'])) { $sortcols = explode(',', trim($query['-sort'])); $sort_columns = array(); foreach ($sortcols as $sortcol) { $sortcol = trim($sortcol); if (strlen($sortcol) === 0) { continue; } $sortcol = explode(' ', $sortcol); if (count($sortcol) > 1) { $sort_columns[$sortcol[0]] = strtolower($sortcol[1]); } else { $sort_columns[$sortcol[0]] = 'asc'; } break; } unset($sortcols); // this was just a temp array so we get rid of it here } else { $sort_columns = array(); } // $sort_columns should now be of the form [ColumnName] -> [Direction] // where Direction is "asc" or "desc" if ($this->_resultSet->found() > 0) { if (@$app->prefs['use_old_resultlist_controller']) { ob_start(); df_display(array(), 'Dataface_ResultListController.html'); $controller = ob_get_contents(); ob_end_clean(); } ob_start(); //echo '<div style="clear: both"/>'; if (!defined('Dataface_ResultList_Javascript')) { define('Dataface_ResultList_Javascript', true); echo '<script language="javascript" type="text/javascript" src="' . DATAFACE_URL . '/js/Dataface/ResultList.js"></script>'; } if (!@$app->prefs['hide_result_filters'] and count($this->_filterCols) > 0) { echo $this->getResultFilters(); } unset($query); if (@$app->prefs['use_old_resultlist_controller']) { echo '<div class="resultlist-controller" id="resultlist-controller-top">'; echo $controller; echo "</div>"; } $canSelect = false; if (!@$app->prefs['disable_select_rows']) { $canSelect = Dataface_PermissionsTool::checkPermission('select_rows', Dataface_PermissionsTool::getPermissions($this->_table)); } echo '<table id="result_list" class="listing"> <thead> <tr>'; if ($canSelect) { echo '<th><input type="checkbox" onchange="toggleSelectedRows(this,\'result_list\');"></th>'; } if (!@$app->prefs['disable_ajax_record_details']) { echo ' <th><!-- Expand record column --></th> '; } $results =& $this->getResults(); $perms = array(); $numCols = 0; $rowHeaderHtml = $this->renderRowHeader(); if (isset($rowHeaderHtml)) { echo $rowHeaderHtml; } else { foreach ($this->_columns as $key) { if (in_array($key, $this->_columns)) { if (!($perms[$key] = Dataface_PermissionsTool::checkPermission('list', $this->_table, array('field' => $key)))) { continue; } if (isset($sort_columns[$key])) { $class = 'sorted-column-' . $sort_columns[$key]; $query = array(); $qs_columns = $sort_columns; unset($qs_columns[$key]); $sort_query = $key . ' ' . ($sort_columns[$key] == 'desc' ? 'asc' : 'desc'); foreach ($qs_columns as $qcolkey => $qcolvalue) { $sort_query .= ', ' . $qcolkey . ' ' . $qcolvalue; } } else { $class = 'unsorted-column'; $sort_query = $key . ' asc'; foreach ($sort_columns as $scolkey => $scolvalue) { $sort_query .= ', ' . $scolkey . ' ' . $scolvalue; } } $sq = array('-sort' => $sort_query); $link = Dataface_LinkTool::buildLink($sq); $numCols++; $label = $this->_table->getFieldProperty('column:label', $key); $legend = $this->_table->getFieldProperty('column:legend', $key); if ($legend) { $legend = '<span class="column-legend">' . htmlspecialchars($legend) . '</span>'; } if (!$label) { $label = $this->_table->getFieldProperty('widget:label', $key); } echo "<th class=\"{$class}\"><a href=\"{$link}\">" . htmlspecialchars($label) . "</a> {$legend}</th>"; } } } echo "</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t"; $cursor = $this->_resultSet->start(); $results->reset(); $baseQuery = array(); foreach ($_GET as $key => $value) { if (strpos($key, '-') !== 0) { $baseQuery[$key] = $value; } } $evenRow = false; while ($results->hasNext()) { $rowClass = $evenRow ? 'even' : 'odd'; $evenRow = !$evenRow; $record =& $results->next(); if (!$record->checkPermission('view')) { $cursor++; unset($record); continue; } $rowClass .= ' ' . $this->getRowClass($record); $query = array_merge($baseQuery, array("-action" => "browse", "-relationship" => null, "-cursor" => $cursor++)); if ($record->checkPermission('link')) { if (@$app->prefs['result_list_use_geturl']) { $link = $record->getURL('-action=view'); } else { $link = Dataface_LinkTool::buildLink($query) . '&-recordid=' . urlencode($record->getId()); } } else { $del =& $record->_table->getDelegate(); if ($del and method_exists($del, 'no_access_link')) { $link = $del->no_access_link($record); } else { $link = null; } } $recordid = $record->getId(); echo "<tr class=\"listing {$rowClass}\">"; if ($canSelect) { echo '<td><input class="rowSelectorCheckbox" id="rowSelectorCheckbox:' . $record->getId() . '" type="checkbox"></td>'; } if (!@$app->prefs['disable_ajax_record_details']) { echo '<td>'; echo '<script language="javascript" type="text/javascript"><!-- registerRecord(\'' . addslashes($recordid) . '\', ' . $record->toJS(array()) . '); //--></script> <img src="' . DATAFACE_URL . '/images/treeCollapsed.gif" onclick="resultList.showRecordDetails(this, \'' . addslashes($recordid) . '\')"/>'; $at =& Dataface_ActionTool::getInstance(); $actions = $at->getActions(array('category' => 'list_row_actions', 'record' => &$record)); //print_r($actions); if (count($actions) > 0) { echo ' <span class="row-actions">'; foreach ($actions as $action) { echo '<a href="' . htmlspecialchars($action['url']) . '" class="' . htmlspecialchars($action['class']) . ' ' . (@$action['icon'] ? 'with-icon' : '') . '" ' . (@$action['icon'] ? ' style="' . htmlspecialchars('background-image: url(' . $action['icon'] . ')') . '"' : '') . (@$action['target'] ? ' target="' . htmlspecialchars($action['target']) . '"' : '') . ' title="' . htmlspecialchars(@$action['description'] ? $action['description'] : $action['label']) . '"><span>' . htmlspecialchars($action['label']) . '</span></a> '; } echo '</span>'; } echo '</td>'; unset($at, $actions); } $rowContentHtml = $this->renderRow($record); if (isset($rowContentHtml)) { echo $rowContentHtml; } else { //$expandTree=false; // flag to indicate when we added the expandTree button //if ( @$app->prefs['enable_ajax_record_details'] === 0 ){ // $expandTree = true; //} foreach ($this->_columns as $key) { $thisField =& $record->_table->getField($key); if (!$perms[$key]) { continue; } $val = $this->renderCell($record, $key); if ($record->checkPermission('edit', array('field' => $key)) and !$record->_table->isMetaField($key)) { $editable_class = 'df__editable_wrapper'; } else { $editable_class = ''; } if (!@$thisField['noLinkFromListView'] and $link and $val) { $val = "<a href=\"{$link}\" class=\"unmarked_link\">" . $val . "</a>"; $editable_class = ''; } else { } if (@$thisField['noEditInListView']) { $editable_class = ''; } echo "<td id=\"td-" . rand() . "\" class=\"{$rowClass} {$editable_class}\"> {$val}</td>"; unset($thisField); } } echo "</tr>"; echo "<tr class=\"listing {$rowClass}\" style=\"display:none\" id=\"{$recordid}-row\">"; if ($canSelect) { echo "<td><!--placeholder for checkbox col --></td>"; } echo "<td colspan=\"" . ($numCols + 1) . "\" id=\"{$recordid}-cell\"></td>\n\t\t\t\t\t </tr>"; unset($record); } if (@$app->prefs['enable_resultlist_add_row']) { echo "<tr id=\"add-new-row\" df:table=\"" . htmlspecialchars($this->_table->tablename) . "\">"; if ($canSelect) { $colspan = 2; } else { $colspan = 1; } echo "<td colspan=\"{$colspan}\"><script language=\"javascript\">require(DATAFACE_URL+'/js/addable.js')</script><a href=\"#\" onclick=\"df_addNew('add-new-row');return false;\">" . df_translate('scripts.GLOBAL.LABEL_ADD_ROW', "Add Row") . "</a></td>"; foreach ($this->_columns as $key) { echo "<td><span df:field=\"" . htmlspecialchars($key) . "\"></span></td>"; } echo "</tr>"; } echo "</tbody>\n\t\t\t\t</table>"; if ($canSelect) { echo '<form id="result_list_selected_items_form" method="post" action="' . df_absolute_url(DATAFACE_SITE_HREF) . '">'; $app =& Dataface_Application::getInstance(); $q =& $app->getQuery(); foreach ($q as $key => $val) { if (strlen($key) > 1 and $key[0] == '-' and $key[1] == '-') { continue; } echo '<input type="hidden" name="' . urlencode($key) . '" value="' . htmlspecialchars($val) . '" />'; } echo '<input type="hidden" name="--selected-ids" id="--selected-ids" />'; echo '<input type="hidden" name="-from" id="-from" value="' . $q['-action'] . '" />'; echo '<input type="hidden" name="--redirect" value="' . base64_encode($app->url('')) . '" />'; echo '</form>'; import('Dataface/ActionTool.php'); $at =& Dataface_ActionTool::getInstance(); $actions = $at->getActions(array('category' => 'selected_result_actions')); if (count($actions) > 0) { echo '<div id="selected-actions">' . df_translate('scripts.Dataface_ResultList.MESSAGE_WITH_SELECTED', "With Selected") . ': <ul class="selectedActionsMenu" id="result_list-selectedActionsMenu">'; foreach ($actions as $action) { $img = ''; if (@$action['icon']) { $img = '<img src="' . $action['icon'] . '"/>'; } if (!@$action['onclick'] and !$action['url']) { $action['onclick'] = "return actOnSelected('result_list', '" . @$action['name'] . "'" . (@$action['confirm'] ? ", function(){return confirm('" . addslashes($action['confirm']) . "');}" : "") . ")"; } echo <<<END \t\t\t\t\t\t<li id="action-{$action['id']}"><a href="{$action['url']}" onclick="{$action['onclick']}" title="{$action['description']}">{$img}{$action['label']}</a></li> END; } echo '</ul></div>'; } } if (@$app->prefs['use_old_resultlist_controller']) { echo '<div class="resultlist-controller" id="resultlist-controller-bottom">'; echo $controller; echo '</div>'; } $out = ob_get_contents(); ob_end_clean(); } else { if (@$app->prefs['use_old_resultlist_controller']) { ob_start(); df_display(array(), 'Dataface_ResultListController.html'); $out = ob_get_contents(); ob_end_clean(); } else { $out = ''; } $out .= "<p style=\"clear:both\">" . df_translate('scripts.GLOBAL.MESSAGE_NO_MATCH', "No records matched your request.") . "</p>"; } return $out; }
function handle(&$params) { import('Dataface/ExistingRelatedRecordForm.php'); $app =& Dataface_Application::getInstance(); $query =& $app->getQuery(); $resultSet =& $app->getResultSet(); //$record =& $app->getRecord(); // loads the current record if (!isset($query['-relationship'])) { return PEAR::raiseError(Dataface_LanguageTool::translate('Error: No relationship specified', 'Error. No relationship was specified when trying to add existing related record.'), DATAFACE_E_NOTICE); } $record = null; $form = new Dataface_ExistingRelatedRecordForm($record, $query['-relationship']); $res = $form->_build(); if (PEAR::isError($res)) { return Dataface_Error::permissionDenied($res->getMessage()); } /* * * We need to add the current GET parameter flags (the GET vars starting with '-') so * that the controller knows to pass control to this method again upon form submission. * */ foreach ($query as $key => $value) { if (strpos($key, '-') === 0) { $form->addElement('hidden', $key); $form->setDefaults(array($key => $value)); } } /* * Store the current query string (the portion after the '?') in the form, so we * can retrieve it after and redirect back to our original location. */ $form->addElement('hidden', '-query'); $form->setDefaults(array('-action' => $query['-action'], '-query' => $_SERVER['QUERY_STRING'])); if (!$form->_record || !is_a($form->_record, 'Dataface_Record')) { trigger_error(Dataface_LanguageTool::translate('Fatal Error', 'Fatal Error: Form should have loaded record but the record was null. ' . Dataface_Error::printStackTrace(), array('stack_trace' => Dataface_Error::printStackTrace(), 'msg' => 'Form should have loaded record but the record was null.')), E_USER_ERROR); } if (!Dataface_PermissionsTool::checkPermission('add existing related record', $form->_record)) { return Dataface_Error::permissionDenied(Dataface_LanguageTool::translate('Error: Permission denied adding existing related record', 'Permission Denied. You do not have sufficient permissions to add an existing related record. Required permission: "add existing related record", but you have only been granted permissions: "' . implode(',', $form->_record->getPermissions()) . '".', array('required_permission' => 'add existing related record', 'granted_permissions' => implode(',', $form->_record->getPermissions())))); } if ($form->validate()) { $res = $form->process(array(&$form, 'save'), true); $response =& Dataface_Application::getResponse(); if (PEAR::isError($res) && !Dataface_Error::isNotice($res)) { return $res; } else { if (Dataface_Error::isNotice($res)) { //$response['--msg'] = @$response['--msg'] . "\n".$res->getMessage(); $app->addError(PEAR::raiseError(df_translate('Failed to add record because of errors', 'Failed to add record to relationship because of the following errors:'), DATAFACE_E_NOTICE)); $app->addError($res); $success = false; } else { $success = true; } } if ($success) { import('Dataface/Utilities.php'); Dataface_Utilities::fireEvent('after_action_existing_related_record'); $fquery = array('-action' => 'browse'); $msg = Dataface_LanguageTool::translate('Record successfully added to relationship', "The record has been successfully added to the " . $query['-relationship'] . " relationship.\n", array('relationship' => $query['-relationship'])); $msg = urlencode(trim(($success ? $msg : '') . @$response['--msg'])); $vals = $form->exportValues(); if (isset($vals['--redirect'])) { $qmark = strpos($vals['--redirect'], '?') !== false ? '&' : '?'; header('Location: ' . $vals['--redirect'] . $qmark . '--msg=' . $msg); exit; } foreach ($vals['__keys__'] as $key => $value) { $fquery[$key] = "=" . $value; } $link = Dataface_LinkTool::buildLink($fquery); header("Location: {$link}" . "&--msg=" . $msg); exit; } } ob_start(); $form->display(); $out = ob_get_contents(); ob_end_clean(); $context = array('form' => $out); if (isset($query['-template'])) { $template = $query['-template']; } else { if (isset($params['action']['template'])) { $template = $params['action']['template']; } else { $template = 'Dataface_Add_Existing_Related_Record.html'; } } df_display($context, $template, true); }
function df_check_permission($permission, &$object, $params = array()) { return Dataface_PermissionsTool::checkPermission($permission, $object, $params); }
function display() { if ($this->_resultSet->found() > 0 || $this->_new) { $res = $this->_build(); if (PEAR::isError($res)) { return $res; } else { //$this->displayTabs(); if (!$this->_new and !Dataface_PermissionsTool::edit($this->_record)) { $this->freeze(); } if ($this->_new and !Dataface_PermissionsTool::checkPermission('new', $this->_table)) { $this->freeze(); } $formTool =& Dataface_FormTool::getInstance(); if ($this->_new || Dataface_PermissionsTool::view($this->_record)) { //echo $this->_renderer->toHtml(); echo $formTool->display($this); } else { echo "<p>" . df_translate('scripts.GLOBAL.INSUFFICIENT_PERMISSIONS_TO_VIEW_RECORD', 'Sorry you have insufficient permissions to view this record.') . "</p>"; } //parent::display(); } } else { echo "<p>" . df_translate('scripts.GLOBAL.NO_RECORDS_MATCHED_REQUEST', 'No records matched your request.') . "</p>"; } }
function handle(&$params) { if (!isset($_POST['-redirect']) and !isset($_POST['relatedList-body'])) { return PEAR::raiseError('Cannot reorder related records because no redirect url was specified in the POST parameters.' . Dataface_Error::printStackTrace()); } $app =& Dataface_Application::getInstance(); $query =& $app->getQuery(); if (!($record = df_get_selected_records($query))) { $record =& $app->getRecord(); } else { $record = $record[0]; } if (PEAR::isError($record)) { return $record; } if (!$record) { return PEAR::raiseError('The specified record could not be found.'); } if (!@$query['-relationship']) { return PEAR::raiseError("No relationship specified."); } $relationship =& $record->_table->getRelationship($query['-relationship']); if (PEAR::isError($relationship)) { return $relationship; } $orderColumn = $relationship->getOrderColumn(); if (!$orderColumn) { return PEAR::raiseError('Could not reorder records of this relationship because it does not have any order column specified.'); } if (!Dataface_PermissionsTool::checkPermission('reorder_related_records', $record, array('relationship' => $query['-relationship']))) { return Dataface_Error::permissionDenied('You do not have permission to reorder the records in this relationship.'); } if (isset($_POST['relatedList-body'])) { $relatedIds = array_map('urldecode', $_POST['relatedList-body']); // In this case we are not just moving a record up or down the list, // we may be reordering the list altogether. // We may also just be ordering a subset of the list. // so we will want to be reordering the given set of records // with respect to each other. // First let's see if the ordering has been initialized yet. $records = array(); //print_r($relatedIds);exit; foreach ($relatedIds as $recid) { //$recid = urldecode($recid); $records[] = df_get_record_by_id($recid); } $start = isset($query['-related:start']) ? $query['-related:start'] : 0; $record->sortRelationship($query['-relationship'], $start, $records); echo 'Sorted Successfully'; exit; } if (!isset($_POST['-reorder:direction'])) { return PEAR::raiseError('Cannot reorder related records because no direction was specified.'); } if (!isset($_POST['-reorder:index'])) { return PEAR::raiseError('Cannot reorder related records because no index was specified.'); } $index = intval($_POST['-reorder:index']); switch ($_POST['-reorder:direction']) { case 'up': //echo "Moving up";exit; $res = $record->moveUp($query['-relationship'], $index); break; case 'down': $res = $record->moveDown($query['-relationship'], $index); break; default: return PEAR::raiseError('Invalid input for direction of reordering. Must be up or down but received "' . $_POST['-reorder:direction'] . '"'); } if (PEAR::isError($res)) { return $res; } header('Location: ' . $_POST['-redirect']); exit; }
function handle(&$params) { import('Dataface/RemoveRelatedRecordForm.php'); $app =& Dataface_Application::getInstance(); $query =& $app->getQuery(); $record = null; //& new Dataface_Record($this->_tablename, $_REQUEST['--__keys__']); // let the form handle the loading of the record $form = new Dataface_RemoveRelatedRecordForm($record, $query['-relationship']); if (!$form->_record) { // the record could not be loaded return PEAR::raiseError(Dataface_LanguageTool::translate('Specified record could not be loaded', 'The specified record could not be loaded'), DATAFACE_E_NOTICE); } unset($app->currentRecord); $app->currentRecord =& $form->_record; if (!Dataface_PermissionsTool::checkPermission('remove related record', $form->_record, array('relationship' => $query['-relationship']))) { return Dataface_Error::permissionDenied(Dataface_LanguageTool::translate('Insufficient permissions to delete record', 'Permission Denied. You do not have permissions to remove related records from the relationship "' . $query['-relationship'] . '" for this record. Requires permission "remove related record" but you only have the following permissions: "' . df_permission_names_as_string($form->_record->getPermissions(array('relationship' => $query['-relationship']))) . '"', array('relationship' => $query['-relationship'], 'required_permission' => 'remove related record', 'granted_permissions' => df_permission_names_as_string($form->_record->getPermissions(array('relationship' => $query['-relationship'])))))); //$this->_vars['error'] = "<div class=\"error\">Error. Permission Denied.<!-- At line ".__LINE__." of file ".__FILE__." --></div>"; //return; } if (@$_POST['-confirm_delete_hidden'] and $form->validate()) { $res = $form->process(array(&$form, 'delete'), true); $response =& Dataface_Application::getResponse(); if (PEAR::isError($res) && !Dataface_Error::isNotice($res)) { return $res; //$this->_vars['error'] = "<div class=\"error\">Error. ".$res->toString()."<!-- At line ".__LINE__." of file ".__FILE__." --></div>"; //return; } else { if (count($res['warnings']) > 0) { //Dataface_Error::isNotice($res) ){ foreach ($res['warnings'] as $warning) { $app->addError($warning); $response['--msg'] = 'Errors occurred trying to remove records'; } } else { $response['--msg'] = df_translate('Records successfully deleted from relationship', ' Records successfully removed from relationship') . "<br>" . @$response['--msg']; } } if (count($res['warnings']) > 0) { foreach (array_merge($res['confirmations'], $res['warnings']) as $confirmation) { $response['--msg'] .= "<br>" . $confirmation; } } $msg = urlencode(trim(@$response['--msg'])); header("Location: " . $form->_record->getURL(array('-action' => 'related_records_list', '-relationship' => $query['-relationship'])) . '&--msg=' . $msg); //header("Location: ".$_SERVER['HOST_URI'].$_SERVER['PHP_SELF'].'?'.$_COOKIE['dataface_lastpage'].'&--msg='.$msg); exit; } ob_start(); $form->display(); $out = ob_get_contents(); ob_end_clean(); $context = array('form' => $out); if (isset($query['-template'])) { $template = $query['-template']; } else { if (isset($params['action']['template'])) { $template = $params['action']['template']; } else { $template = 'Dataface_Remove_Related_Record.html'; } } df_display($context, $template, true); }
function handle($params) { import('Dataface/ImportForm.php'); $app =& Dataface_Application::getInstance(); $query =& $app->getQuery(); $form = new Dataface_ImportForm($query['-table']); $record =& $form->_record; if (is_object($record)) { if (!$record->checkPermission('import')) { return Dataface_Error::permissionDenied(); } } else { if (!Dataface_PermissionsTool::checkPermission('import', Dataface_Table::loadTable($query['-table']))) { return Dataface_Error::permissionDenied(); } } $form->_build(); if ($form->validate()) { //echo "validated"; $querystr = $form->exportValue('-query'); $returnPage = $form->exportValue('--redirect'); if (intval($form->_step) === 1) { if (preg_match('/--step=1/', $querystr)) { $querystr = preg_replace('/--step=1/', '--step=2', $querystr); } else { $querystr .= '&--step=2'; } $importTablename = $form->process(array(&$form, 'import')); //echo "Table: $importTablename"; //exit; //$link = 'Location: '.$_SERVER['PHP_SELF'].'?'.$querystr.'&--importTablename='.$importTablename; //echo $link; //exit; header('Location: ' . $_SERVER['PHP_SELF'] . '?' . $querystr . '&--importTablename=' . $importTablename . '&--redirect=' . urlencode($returnPage)); exit; } else { $records = $form->process(array(&$form, 'import')); $returnPage = $form->exportValue('--redirect'); //$keys = $form->exportValue('__keys__'); //$keys['-action'] = 'browse'; //$keys['-step'] = null; //$keys['-query'] = null; //$link = Dataface_LinkTool::buildLink($keys); $link = $returnPage; $response =& Dataface_Application::getResponse(); $msg = urlencode(trim("Records imported successfully.\n" . @$response['--msg'])); if (strpos($link, '?') === false) { $link .= '?'; } header('Location: ' . $link . '&--msg=' . $msg); exit; } } ob_start(); $form->display(); $out = ob_get_contents(); ob_end_clean(); $context['form'] = $out; $context['filters'] = $form->_filterNames; $context['step'] = $form->_step; if (isset($query['-template'])) { $template = $query['-template']; } else { if (isset($params['action']['template'])) { $template = $params['action']['template']; } else { if (isset($query['-relationship'])) { $template = 'Dataface_Import_RelatedRecords.html'; } else { $template = 'Dataface_Import_RelatedRecords.html'; } } } df_display($context, $template, true); }
function toXML_Dataface_QueryTool(&$tool) { $ns = $this->ns; $ans = $this->atts_ns; $out = array(); $tablename = $tool->_tablename; $tool->loadSet(); $out[] = "<{$ns}:results source=\"" . $this->xmlentities($tablename) . "\" start=\"" . $this->xmlentities($tool->start()) . "\" end=\"" . $this->xmlentities($tool->end()) . "\" limit=\"" . $this->xmlentities($tool->limit()) . "\" cursor=\"" . $this->xmlentities($tool->cursor()) . "\" cardinality=\"" . $this->xmlentities($tool->cardinality()) . "\" found=\"" . $this->xmlentities($tool->found()) . "\" >"; $table =& Dataface_Table::loadTable($tablename); foreach ($table->fields() as $field) { if (Dataface_PermissionsTool::checkPermission('view', $table, array('field' => $field['name']))) { $this->addRequiredTable($tablename); $out[] = "\t<{$ns}:column table=\"" . $this->xmlentities($tablename) . "\">" . $this->xmlentities($field['name']) . "</{$ns}:column>"; } } $it =& $tool->iterator(); while ($it->hasNext()) { $nex =& $it->next(); $out[] = $this->toXML_Dataface_Record($nex); unset($nex); } $out[] = "</{$ns}:results>"; return implode("\n", $out); }
function handle(&$params) { //global $myctr; $app =& Dataface_Application::getInstance(); $query =& $app->getQuery(); $resultSet =& $app->getResultSet(); //$record =& $app->getRecord(); // loads the current record import('Dataface/ShortRelatedRecordForm.php'); if (!isset($query['-relationship'])) { return PEAR::raiseError(Dataface_LanguageTool::translate('No relationship specified in new related record', 'No relationship was specified while trying to create new related record. Please specify a relationship.'), DATAFACE_E_ERROR); } $record = null; // we let the Form automatically handle loading of record. $form = new Dataface_ShortRelatedRecordForm($record, $query['-relationship']); $form->_build(); /* * * We need to add the current GET parameter flags (the GET vars starting with '-') so * that the controller knows to pass control to this method again upon form submission. * */ //$myctr = 0; foreach ($query as $key => $value) { //echo "doing $key"; if (strpos($key, '-') === 0) { $form->addElement('hidden', $key); $form->setDefaults(array($key => $value)); //if ( $myctr == 2 ) exit; } //$myctr++; } /* * Store the current query string (the portion after the '?') in the form, so we * can retrieve it after and redirect back to our original location. */ $form->addElement('hidden', '-query'); $form->setDefaults(array('-action' => $query['-action'], '-query' => $_SERVER['QUERY_STRING'])); if (!Dataface_PermissionsTool::checkPermission('add new related record', $form->_record, array('relationship' => $query['-relationship']))) { return Dataface_Error::permissionDenied(Dataface_LanguageTool::translate('Permission denied while trying to add new related record', 'Permission Denied: You do not have permission to add related records to the current record.')); //$this->_vars['error'] = "<div class=\"error\">Error. Permission Denied.<!-- At line ".__LINE__." of file ".__FILE__." --></div>"; //return; } if ($form->validate()) { $vals = $form->exportValues(); $res = $form->process(array(&$form, 'save'), true); $response =& Dataface_Application::getResponse(); if (PEAR::isError($res) && !Dataface_Error::isNotice($res)) { return $res; //$this->_vars['error'] = "<div class=\"error\">Error. ".$res->toString()."<!-- At line ".__LINE__." of file ".__FILE__." --></div>"; //return; } else { if (Dataface_Error::isNotice($res)) { $success = false; $app->addError($res); //$response['--msg'] = @$response['--msg'] . "\n".$res->getMessage(); } else { $success = true; } } if ($success) { import('Dataface/Utilities.php'); Dataface_Utilities::fireEvent('after_action_new_related_record'); $fquery = array('-action' => 'browse'); $table = Dataface_Table::loadTable($query['-table']); $rel = $table->getRelationship($query['-relationship']); $msg = urlencode(trim(Dataface_LanguageTool::translate("Record successfully added to relationship", "Record successfully added to " . $rel->getLabel() . " relationship.\n", array('relationship' => $rel->getLabel())) . (isset($response['--msg']) ? $response['--msg'] : ''))); foreach ($vals['__keys__'] as $key => $value) { $fquery[$key] = "=" . $value; } $fquery['-relationship'] = $query['-relationship']; $fquery['-action'] = 'related_records_list'; $link = Dataface_LinkTool::buildLink($fquery); $app->redirect("{$link}" . "&--msg=" . $msg); } } ob_start(); $gdefs = array(); foreach ($_GET as $gkey => $gval) { if (substr($gkey, 0, 4) == '--q:') { $gdefs[substr($gkey, 4)] = $gval; } } if (count($gdefs) > 0) { $form->setDefaults($gdefs); } $form->display(); $out = ob_get_contents(); ob_end_clean(); $context = array('form' => $out); if (isset($query['-template'])) { $template = $query['-template']; } else { if (isset($params['action']['template'])) { $template = $params['action']['template']; } else { $template = 'Dataface_Add_New_Related_Record.html'; } } df_display($context, $template, true); }