Esempio n. 1
0
 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();
 }
Esempio n. 2
0
 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));
 }
Esempio n. 3
0
    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}\">&nbsp;{$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;
    }
Esempio n. 4
0
 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);
 }
Esempio n. 5
0
 function df_check_permission($permission, &$object, $params = array())
 {
     return Dataface_PermissionsTool::checkPermission($permission, $object, $params);
 }
Esempio n. 6
0
 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>";
     }
 }
Esempio n. 7
0
 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;
 }
Esempio n. 8
0
    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);
    }
Esempio n. 9
0
 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);
 }
Esempio n. 10
0
 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);
 }
Esempio n. 11
0
 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);
 }