function beforeDelete($record) { $versions = df_get_records_array('webpage_versions', array('webpage_id' => '=' . $record->val('webpage_id'))); while ($versions) { foreach ($versions as $version) { $res = $version->delete(true); if (PEAR::isError($res)) { return $res; } } $versions = df_get_records_array('webpage_versions', array('webpage_id' => '=' . $record->val('webpage_id'))); } $logs = df_get_records_array('webpage_check_log', array('webpage_id' => '=' . $record->val('webpage_id'))); while ($logs) { foreach ($logs as $log) { $res = $log->delete(true); if (PEAR::isError($res)) { return $res; } } $logs = df_get_records_array('webpage_check_log', array('webpage_id' => '=' . $record->val('webpage_id'))); } $children = df_get_records_array('webpages', array('parent_id' => '=' . $record->val('webpage_id'))); while ($children) { foreach ($children as $child) { $res = $child->delete(true); if (PEAR::isError($res)) { return $res; } } $children = df_get_records_array('webpages', array('parent_id' => '=' . $record->val('webpage_id'))); } }
function test_html() { $s =& Dataface_Table::loadTable('Profiles'); $records = df_get_records_array('Profiles'); $grid = new Dataface_dhtmlxGrid_grid($s->fields(), $records); echo $grid->toXML(); }
function handle(&$params) { try { $app =& Dataface_Application::getInstance(); $query =& $app->getQuery(); $auth =& Dataface_AuthenticationTool::getInstance(); $user =& $auth->getLoggedInUser(); if (!isset($query['-site-id'])) { throw new Exception("No site id specified"); } if (isset($query['-compiled'])) { if ($query['-compiled'] == 'true' || $query['-compiled'] == 1) { $compiled = 1; } else { $compiled = 0; } $jobs = df_get_records_array('jobs', array('website_id' => $query['-site-id'], 'posted_by' => $user->val('username'), 'compiled' => $compiled)); } else { $jobs = df_get_records_array('jobs', array('website_id' => $query['-site-id'], 'posted_by' => $user->val('username'))); } //array of job ids and job titles to present to user $results = array(); foreach ($jobs as $job) { $results[] = array('job_id' => $job->val('job_id'), 'title' => $job->getTitle()); } echo json_encode($results); } catch (Exception $e) { if ($e->getCode() == E_USER_ERROR) { echo $e->getMessage(); } else { throw $e; } } }
function handle(&$params) { try { $app = Dataface_Application::getInstance(); $query = $app->getQuery(); $selectedRecords = df_get_selected_records($query); $isNewJob = false; if ($query['-job'] && is_numeric($query['-job'])) { $selectedJob = df_get_record('jobs', array('job_id' => '=' . $query['-job'])); } else { //no job was selected by user $site_id = $selectedRecords[0]->val('website_id'); $jobs = df_get_records_array('jobs', array('website_id' => $site_id, 'compiled' => 'false')); $createNewJob = false; if ($query['-job'] == "new") { $createNewJob = true; } if (count($jobs) == 0 || $createNewJob) { //create a new job $selectedJob = SweteJob::createJob(SweteSite::loadSiteById($site_id))->getRecord(); $isNewJob = true; } else { if (count($jobs) == 1) { //only one available job $selectedJob = $jobs[0]; } else { throw new Exception("No Job id was specified, but there are " . $count($jobs) . " available jobs to add to"); } } } if (!$selectedJob) { throw new Exception("Job could not be found", E_USER_ERROR); } if (!$selectedJob->checkPermission('edit')) { throw new Exception("You don't have permission to edit this job"); } $job = new SweteJob($selectedJob); $stringsAdded = array(); foreach ($selectedRecords as $record) { if (intval($record->val('website_id')) !== intval($selectedJob->val("website_id"))) { throw new Exception("The string " . $record->val('string') . " is not in the same site as the job."); } //If string was already added to ANOTHER job, it doesn't matter //It will also be added to this one //if string was already added to this job, do nothing if (!$job->containsString($record->val('string'))) { $job->addTranslationMiss($record->val('translation_miss_log_id')); array_push($stringsAdded, $record->val('string')); } } $results = array('stringsAdded' => $stringsAdded, 'jobId' => $selectedJob->val('job_id'), 'isNewJob' => $isNewJob); echo json_encode($results); } catch (Exception $e) { if ($e->getCode() == E_USER_ERROR) { echo $e->getMessage(); } else { throw $e; } } }
function handle(&$params) { $app =& Dataface_Application::getInstance(); $query =& $app->getQuery(); //$query['-skip'] = 0; //$query['-limit'] = 1000; if ($query['-table'] != 'payments') { return PEAR::raiseError('This action can only be called on the payments table.'); } $payments = df_get_records_array('payments', $query); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Language" content="en-us" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Payment Report</title> <link href="css/print.css" rel="stylesheet" type="text/css" media="print, screen" /> </head> <body onload="javascript:window.print()"> <table style="width: 100%" cellpadding="3" class="centered"> <tr class="cell_header"> <td class="cell_header">ID</td> <td class="cell_header">Invoice ID</td> <td class="cell_header">Invoice Date</td> <td class="cell_header">Customer</td> <td class="cell_header">Labor Total</td> <td class="cell_header">Parts Total</td> <td class="cell_header">Tax</td> <td class="cell_header">Total</td> <td class="cell_header">Payment Date</td> <td class="cell_header">Payment</td> </tr> <?php foreach ($payments as $p) { echo '<tr class="cell">'; echo '<td class="cell">' . $p->htmlValue('id') . '</td>'; echo '<td class="cell">' . $p->htmlValue('invoiceid') . '</td>'; echo '<td class="cell">' . $p->htmlValue('invoicedate') . '</td>'; echo '<td class="cell">' . $p->htmlValue('customer') . '</td>'; echo '<td class="cell">' . $p->htmlValue('labortotal') . '</td>'; echo '<td class="cell">' . $p->htmlValue('partstotal') . '</td>'; echo '<td class="cell">' . $p->htmlValue('tax') . '</td>'; echo '<td class="cell">' . $p->htmlValue('total') . '</td>'; echo '<td class="cell">' . $p->htmlValue('date') . '</td>'; echo '<td class="cell_right_end">' . $p->htmlValue('amount') . '</td>'; echo '</tr>'; } echo '</table></body></html>'; }
function &getRecords() { $app =& Dataface_Application::getInstance(); $query = $app->getQuery(); $query['-skip'] = 0; $query['-limit'] = 500; $records =& df_get_records_array($query['-table'], $query); return $records; }
function handleGet_noSettingsId($params) { $app = Dataface_Application::getInstance(); $sites_to_import = array(); $sites = df_get_records_array('websites', array()); foreach ($sites as $site) { if ($site->checkPermission('import webpages')) { $sites_to_import[] = $site; } } Dataface_JavascriptTool::getInstance()->import('swete/actions/import_webpages/no_settings_id.js'); df_display(array('sites_to_import' => $sites_to_import), 'swete/actions/import_webpages/no_settings_id.html'); }
function getDataGrids($query = array()) { $app =& Dataface_Application::getInstance(); $appQuery =& $app->getQuery(); if (!@$query['tableName']) { $query['tableName'] = $appQuery['-table']; } $grids = df_get_records_array('dataface__DataGrids', $query, null, null, false); $out = array(); foreach ($grids as $grid) { $out[] = unserialize($grid->val('gridData')); } return $out; }
function beforeDelete($record) { // We need to delete all associated proxy sites. $tms = df_get_records_array('directory_profile_translation_memories', array('directory_profile_id' => '=' . $record->val('directory_profile_id'))); while ($tms) { foreach ($tms as $tm) { $res = $tm->delete(true); if (PEAR::isError($res)) { return PEAR::raiseError('Failed to delete profile site "' . $tm->getTitle(), DATAFACE_E_NOTICE); } } $tms = df_get_records_array('directory_profile_translation_memories', array('directory_profile_id' => '=' . $record->val('directory_profile_id'))); } }
/** * Creates a grid with the given id or a query. * @param mixed $query Either the grid id, or a query array. * */ function Dataface_dhtmlxGrid_activegrid($query, $name = 'mygrid') { // We are building a grid from a Dataface Query array. $q =& $query; if (isset($q['-columns'])) { if (is_array($q['-columns'])) { $columns = $q['-columns']; } else { $columns = explode(',', $q['-columns']); } } else { $columns = null; } if (isset($q['-records'])) { $this->Dataface_dhtmlxGrid_grid($columns, $q['-records'], $name, $q['-parent_id'], $q['-relationship']); } else { if (isset($q['-relationship'])) { // We are looking at the related records of a particular record. $record = df_get_record($q['-table'], $q); $records = $record->getRelatedRecordObjects($q['-relationship']); // We want the keys to be unique identifiers for the record that it // points to, so we will rekey the array using the // Dataface_RelatedRecord::getId() method //$related_records = $this->keyById($related_records); if (!$columns) { $table =& Dataface_Table::loadTable($q['-table']); $relationship =& $table->getRelationship($q['-relationship']); $columns = $relationship->getColumnNames(); } $this->Dataface_dhtmlxGrid_grid($columns, $records, $name, $record->getId(), $q['-relationship']); // now that we have created the grid.. we need to generate // and id for it and save the data in session vars } else { // We are not looking for related records - we are looking for // actual records. $records = df_get_records_array($q['-table'], $q); // We want the keys to be unique identifiers for the record that // it points to, so we will rekey the array using the // Dataface_Record::getId() method. //$records = $this->keyById($records); if (!$columns) { $table =& Dataface_Table::loadTable($q['-table']); $columns = $table->fields(); } $this->Dataface_dhtmlxGrid_grid($columns, $records, $name, $q['-table']); } } $this->id = $this->update(null); }
function handle(&$params) { @session_write_close(); $app =& Dataface_Application::getInstance(); //$out = array(); $query =& $app->getQuery(); $records = df_get_records_array($query['-table'], $query); header("Content-type: text/html; charset=" . $app->_conf['oe']); echo '<option value="">(None)</option>' . "\n"; foreach ($records as $record) { // First lets get the value that we are using for this option $value = null; if (@$query['-value'] == '__id__') { // Use the record id as the value $value = $record->getId(); } else { if (@$query['-value']) { // We have an explicitly specified column to use as the key. $value = $record->val($query['-value']); } else { if (count($record->_table->keys()) > 1) { // This record has a compound key and no value column was specified // so we use the record id. $value = $record->getId(); } else { // This record has a single key column so we return its value $tkeys = $record->_table->keys(); $tkeysKeys = array_keys($tkeys); $firstKey = reset($tkeysKeys); $value = $record->val($firstKey); } } } // Now let's get the text that we are using for this option $text = null; switch (strval(@$query['-text'])) { case '': case '__title__': $text = $record->getTitle(); break; default: $text = $record->display($query['-text']); break; } echo '<option value="' . df_escape($value) . '">' . df_escape($text) . '</option>' . "\n"; } exit; }
function beforeDelete($record) { // We need to delete all associated webpages $pages = df_get_records_array('webpages', array('website_id' => '=' . $record->val('website_id'))); while ($pages) { foreach ($pages as $page) { $res = $page->delete(true); if (PEAR::isError($res)) { return PEAR::raiseError("Failed to delete page " . $page->getTitle(), DATAFACE_E_NOTICE); } } $pages = df_get_records_array('webpages', array('website_id' => '=' . $record->val('website_id'))); } if (class_exists('LiveCache')) { LiveCache::touchSite($record->val('website_id')); } }
function handle(&$params) { $app =& Dataface_Application::getInstance(); $query =& $app->getQuery(); $nav = array('prev' => array('label' => null, 'url' => null), 'next' => array('label' => null, 'url' => null), 'current' => array('label' => null)); import('Dataface/Ontology.php'); Dataface_Ontology::registerType('Event', 'Dataface/Ontology/Event.php', 'Dataface_Ontology_Event'); $ontology =& Dataface_Ontology::newOntology('Event', $query['-table']); $dateAtt = $ontology->getFieldname('date'); if (PEAR::isError($dateAtt)) { die($dateAtt->getMessage()); } if (!isset($query[$dateAtt]) or !preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.\\.[0-9]{4}-[0-9]{2}-[0-9]{2}$/', $query[$dateAtt])) { $query[$dateAtt] = date('Y-m-01') . '..' . date('Y-m-t'); } list($startDate) = explode('..', $query[$dateAtt]); $startTime = strtotime($startDate); $prevMonth = intval(date('m', $startTime)) - 1; $nextMonth = intval(date('m', $startTime)) + 1; $prevTime = mktime(0, 0, 0, $prevMonth, 1, date('Y', $startTime)); $nextTime = mktime(0, 0, 0, $nextMonth, 1, date('Y', $startTime)); $nav['prev']['label'] = date('F Y', $prevTime); $nav['prev']['url'] = $app->url('-action=calendar&' . $dateAtt . '=' . urlencode(date('Y-m-01', $prevTime) . '..' . date('Y-m-t', $prevTime)), true, true); $nav['next']['label'] = date('F Y', $nextTime); $nav['next']['url'] = $app->url('-action=calendar&' . $dateAtt . '=' . urlencode(date('Y-m-01', $nextTime) . '..' . date('Y-m-t', $nextTime)), true, true); $nav['current']['label'] = date('F Y', $startTime); $query['-limit'] = 500; $records =& df_get_records_array($query['-table'], $query); $events = array(); foreach ($records as $record) { $event = $ontology->newIndividual($record); $datems = strtotime(date('Y-m-d', strtotime($event->strval('date')))) * 1000; $timems = (strtotime(date('H:i:s', strtotime($event->strval('start')))) - strtotime(date('Y-m-d'))) * 1000; $events[] = array('title' => $record->getTitle(), 'description' => $record->getDescription(), 'date' => $datems + $timems, 'startTime' => strtotime($event->strval('date')) * 1000, 'record_id' => $record->getId()); unset($event); unset($record); } import('Services/JSON.php'); $json = new Services_JSON(); $event_data = 'var events = ' . $json->encode($events); import('Dataface/ResultList.php'); $rs = new Dataface_ResultList($query['-table']); df_display(array('event_data' => $event_data, 'nav' => &$nav, 'currentTime' => $startTime, 'filters' => $rs->getResultFilters()), 'Dataface_Calendar.html'); }
function handle(&$params) { import('Dataface/XMLTool/default.php'); $xml = new Dataface_XMLTool_default(); $xml->expanded = true; $app =& Dataface_Application::getInstance(); $query =& $app->getQuery(); $input = array(); if (isset($query['--single-record-only'])) { $record =& $app->getRecord(); if ($record->checkPermission('view xml')) { $input[] = $record; } } else { if (@$query['-relationship']) { $query['-related:limit'] = 9999; $query['-related:start'] = 0; $record =& $app->getRecord(); $rrecords =& df_get_related_records($query); // $record->getRelatedRecordObjects( $query['-relationship'], 'all' ); foreach ($rrecords as $rrecord) { $drecord =& $rrecord->toRecord(); if ($drecord->checkPermission('view xml')) { $input[] = $drecord; } unset($drecord); unset($rrecord); } } else { $records = df_get_records_array($query['-table'], $query, null, null, false); foreach ($records as $record) { if ($record->checkPermission('view xml')) { $input[] = $record; } } } } echo $xml->header(); echo $xml->toXML($input); echo $xml->footer(); exit; }
function handle(&$params) { $app =& Dataface_Application::getInstance(); $query =& $app->getQuery(); $records = df_get_selected_records($query); if (!$records) { if ($query['-mode'] == 'list') { $records = df_get_records_array($query['-table'], $query); } else { $records = array($app->getRecord()); } } $out = array(); if (isset($query['--fields'])) { $fields = explode(' ', $query['--fields']); } else { $fields = null; } foreach ($records as $record) { if (!$record->checkPermission('export_json')) { continue; } if (is_array($fields)) { $allowed_fields = array(); foreach ($fields as $field) { if (!$record->checkPermission('export_json', array('field' => $field))) { continue; } $allowed_fields[] = $field; } } else { $allowed_fields = null; } $out[] = $record->vals($allowed_fields); } import('Services/JSON.php'); $json = new Services_JSON(); $enc_out = $json->encode($out); header('Content-type: application/json; charset=' . $app->_conf['oe']); echo $enc_out; exit; }
function handle(&$params) { $details = df_get_records_array('detail', array()); //$malecount = df_query("SELECT * , COUNT( detail.gender ) FROM detail WHERE detail.gender='male'"); //$recentdetails = df_get_records_array('detail', array()); $app =& Dataface_Application::getInstance(); //$recentdetails = mysql_query("select * from detail WHERE detail.registration_date<= NOW() + INTERVAL 72 HOUR", $app->db()); $recentdetails = mysql_query("select * from detail ", $app->db()); $resultm = mysql_query("SELECT COUNT(gender) as c from detail WHERE gender = 'male'", $app->db()); $resultf = mysql_query("SELECT COUNT(gender) as c from detail WHERE gender = 'female'", $app->db()); $resultprg = mysql_query("SELECT COUNT(skills) as c from detail WHERE skills = 'programming'", $app->db()); $resultntwk = mysql_query("SELECT COUNT(skills) as c from detail WHERE skills = 'networking'", $app->db()); $resultadmin = mysql_query("SELECT COUNT(skills) as c from detail WHERE skills = 'sysadmin'", $app->db()); $malecount = mysql_fetch_object($resultm)->c; $femalecount = mysql_fetch_object($resultf)->c; $prgcount = mysql_fetch_object($resultprg)->c; $ntwkcount = mysql_fetch_object($resultntwk)->c; $admincount = mysql_fetch_object($resultadmin)->c; //mysql_result($malecount,0,0); //$template_name = $params['action']['template']; // The value of the template parameter Dataface_Application::getInstance()->addHeadContent(sprintf('<link rel="stylesheet" type="text/css" href="%s"/>', htmlspecialchars(DATAFACE_SITE_URL . '/dashboard.css'))); df_display(array('detail' => $details, 'malecount' => $malecount, 'femalecount' => $femalecount, 'prgcount' => $prgcount, 'ntwkcount' => $ntwkcount, 'admincount' => $admincount), 'dashboard.html'); }
/** * Returns an array of history ids of history records that match the * given query. */ function findMatchingSnapshots($record, $query, $idsOnly = true) { $app =& Dataface_Application::getInstance(); $htablename = $record->_table->tablename . '__history'; if (!Dataface_Table::tableExists($htablename)) { return array(); } $keys = $record->strvals(array_keys($record->_table->keys())); foreach ($keys as $key => $val) { $query[$key] = '=' . $val; } if ($idsOnly) { $qbuilder = new Dataface_QueryBuilder($htablename, $query); $sql = $qbuilder->select(array('history__id'), $query); $res = xf_db_query($sql, df_db()); $ids = array(); while ($row = xf_db_fetch_row($res)) { $ids[] = $row[0]; } @xf_db_free_result($res); return $ids; } else { return df_get_records_array($htablename, $query); } }
function process($values) { $app =& Dataface_Application::getInstance(); import('Dataface/CopyTool.php'); $copyTool =& Dataface_CopyTool::getInstance(); $query =& $app->getQuery(); //if ( @$values['-copy_replace:copy'] ){ //} $orig_replacements = $values['-copy_replace_form:replace']; $update_fields = explode('-', $values['-copy_replace:fields']); //print_r($update_fields); $replacements = array(); foreach ($update_fields as $fld) { if (!$fld) { continue; } $replacements[$fld] = $orig_replacements[$fld]; } $blanks = @$_POST['-copy_replace:blank_flag']; if (!$blanks) { $blanks = array(); } foreach ($blanks as $key => $val) { if ($val) { $replacements[$key] = null; } } if (!is_array($replacements)) { return PEAR::raiseError(df_translate('actions.copy_replace.no_fields_selected_to_change', "No fields were selected to change.")); } $records = df_get_selected_records($query); if (count($records) == 0) { $q = $query; $q['-limit'] = 99999; $q['-skip'] = 0; $records =& df_get_records_array($q['-table'], $q); } $fields = $this->getFieldsForRecord($records[0]); $dummyForm =& $this->getTableForm($query['-table']); foreach ($replacements as $key => $val) { $dummyForm =& $this->getTableForm($fields[$key]['tablename']); if (strpos($val, '=') === 0) { // This is a calculated change so we don't try to push the value // we'll let it go through continue; } $val = $dummyForm->pushValue($key, $metaValues, $this->form->getElement('-copy_replace_form:replace[' . $key . ']')); //echo $val;//)); // if ($val === '' and !@$blanks[$key]) { unset($replacements[$key]); } else { $replacements[$key] = $val; } unset($dummyForm); } $warnings = array(); $messages = array(); foreach ($records as $record) { if (@$values['-copy_replace:copy']) { // We are performing a copy. $relatedRecord = null; // This is a hack fix. It should work with 1:n relationships // but will probably fail for n:m relationships. if (is_a($record, 'Dataface_RelatedRecord')) { $relatedRecord = $record; $record = $record->toRecord(); } $res = $copyTool->copy($record, $replacements); if (PEAR::isError($res)) { $warnings[] = $res; } else { $messages[] = sprintf(df_translate('actions.copy_replace.successfully_copied_record_x_as_record_y', "Successfully copied record '%s' as record '%s'"), $record->getTitle(), $res->getTitle()); } $warnings = array_merge($warnings, $copyTool->warnings); } else { if (!$record->checkPermission('edit')) { $warnings[] = Dataface_Error::permissionDenied(sprintf(df_translate('actions.copy_replace.could_not_update_record_x_insufficient_permissions', "Could not update record '%s' because of insufficient permissions."), $record->getTitle())); continue; } $failed = false; foreach ($replacements as $key => $val) { if (!$record->checkPermission('edit', array('field' => $key))) { $warnings[] = Dataface_Error::permissionDenied(sprintf(df_translate('actions.copy_replace.could_not_update_record_x_insufficient_permissions_on_field_y', "Could not update record '%s' because of insufficient permissions on field '%s'."), $record->getTitle(), $key)); $failed = true; } } if ($failed) { continue; } foreach ($replacements as $k => $v) { if (strpos($v, '=') === 0) { $replacements[$k] = $copyTool->evaluate($v, $k, $record); } } $record->setValues($replacements); $res = $record->save(); if (PEAR::isError($res)) { $warnings[] = $res; } else { $messages[] = sprintf(df_translate('actions.copy_replace.successfully_updated_title', "Successfully updated '%s'"), $record->getTitle()); } } unset($record); } if (@$values['-copy_replace:copy']) { $action = 'copied'; } else { $action = 'updated'; } $this->message = sprintf(df_translate('actions.copy_replace.x_records_y_successfully_count_warnings', '%d records %s successfully. %d warnings.'), count($messages), df_translate($action, $action), count($warnings)); //$this->message = count($messages).' records '.$action.' successfully. '.count($warnings).' warnings.'; if (count($warnings)) { $warning_msgs = array(); foreach ($warnings as $warning) { $warning_msgs[] = $warning->getMessage(); } } else { $warning_msgs = array(); } //print_r($warning_msgs); $this->message .= '<br>' . implode('<br>', $warning_msgs); return true; }
function records($params, &$smarty) { $table = null; if (isset($params['table'])) { $table = $params['table']; unset($params['table']); } if (isset($params['var'])) { $varname = $params['var']; unset($params['var']); } else { throw new Exception("{records} tag requires the var parameter to be set."); } $q = array_merge($this->app->getQuery(), $params); if (isset($table)) { $q['-table'] = $table; } $vars =& $smarty->get_template_vars(); $vars[$varname] = df_get_records_array($q['-table'], $q); }
function handle(&$params) { $app =& Dataface_Application::getInstance(); $query =& $app->getQuery(); $mt =& Dataface_ModuleTool::getInstance(); $mod =& $mt->loadModule('modules_DataGrid'); if (PEAR::isError($mod)) { return $mod; } $dataGrid = $mod->getDataGrid($query['-gridid']); if (!$dataGrid) { return PEAR::raiseError("Error, the specified data grid could not be found"); } import('Dataface/XMLTool.php'); $xmlTool = new Dataface_XMLTool(); $records = df_get_records_array($query['-table'], $query, null, null, false); $rows = array(); $fieldDefs = $dataGrid->getFieldDefs(); foreach ($records as $record) { $row = array(); $row['__recordID__'] = $record->getId(); foreach ($fieldDefs as $colName => $fieldDef) { if (strpos($colName, '#') === false) { // No index was provided so index is 0 $index = 0; $fieldName = $colName; } else { list($fieldName, $index) = explode('#', $colName); } $row[str_replace('.', '-', $colName)] = $xmlTool->xmlentities($record->strval($fieldName, $index)); } $rows[] = $row; unset($record); } if (@$_GET['--format'] == 'csv') { import('actions/export_csv.php'); $temp = tmpfile(); $headings = array(); if ($rows) { foreach ($fieldDefs as $key => $val) { $headings[] = $val['widget']['label']; } } fputcsv($temp, $headings, ",", '"'); foreach ($rows as $row) { $thisrow = array(); foreach ($row as $key => $val) { if ($key != '__recordID__') { $thisrow[] = $val; } } fputcsv($temp, $thisrow, ",", '"'); } fseek($temp, 0); header("Content-type: text/csv; charset=" . $app->_conf['oe']); header('Content-disposition: attachment; filename="' . $query['-table'] . '_' . $dataGrid->name . '_export_' . date('Y_m_d_H_i_s') . '.csv"'); $fstats = fstat($temp); echo fread($temp, $fstats['size']); fclose($temp); } else { header("Content-type: application/xml; charset=" . $app->_conf['oe']); df_register_skin('DataGrid', DATAFACE_PATH . '/modules/DataGrid/templates'); df_display(array('rows' => &$rows), 'DataGrid/datastore.xml'); } exit; }
function createFeed($query = null) { import('feedcreator.class.php'); $app =& Dataface_Application::getInstance(); if (!isset($query)) { $query = $app->getQuery(); } $feed_data = $this->buildFeedData($query); $rss = new UniversalFeedCreator(); $rss->encoding = $app->_conf['oe']; //$rss->useCached(); // use cached version if age<1 hour $rss->title = $feed_data['title']; $rss->description = $feed_data['description']; //optional //$rss->descriptionTruncSize = 500; //$rss->descriptionHtmlSyndicated = true; $rss->link = htmlentities($feed_data['link']); $rss->syndicationURL = htmlentities($feed_data['syndicationURL']); if (isset($query['-relationship'])) { // Do the related records thing $record =& $app->getRecord(); $query['-related:start'] = 0; $rrecords =& df_get_related_records(array_merge($query, array('-related:limit' => 1))); //$record->getRelatedRecordObjects($query['-relationship'], 0,1); if (count($rrecords) > 0) { $testRec =& $rrecords[0]->toRecord(); $lastUpdatedColumn = $testRec->_table->getLastUpdatedField(); if ($lastUpdatedColumn) { unset($rrecords); $query['-related:limit'] = 30; $query['-related:sort'] = $lastUpdatedColumn . ' desc'; $rrecords =& df_get_related_records($query); //$record->getRelatedRecordObjects($query['-relationship'], null,null, 0, $lastUpdatedColumn.' desc'); } else { unset($rrecords); $query['-related:limit'] = 30; $rrecords =& df_get_related_records($query); //$record->getRelatedRecordObjects($query['-relationship']); } $records = array(); foreach ($rrecords as $rrec) { $dfRecord =& $rrec->toRecord(); if ($dfRecord->checkPermission('view', array('recordmask' => array('view' => 1)))) { $records[] =& $dfRecord; } unset($dfRecord); unset($rrec); } } else { $records = array(); } //trigger_error("Not implemented yet for related records", E_USER_ERROR); } else { $records =& df_get_records_array($query['-table'], $query); } foreach ($records as $record) { if (!$record->checkPermission('view')) { continue; } if (!$record->checkPermission('view in rss')) { continue; } $item = $this->createFeedItem($record); $del =& $record->_table->getDelegate(); if (isset($del) and method_exists($del, 'canAddToFeed') and !$del->canAddToFeed($record, $rss)) { unset($del); continue; } unset($del); $rss->addItem($item); unset($item); } return $rss; }
function handle(&$params) { $bibs = df_get_records_array('docs', array()); df_display(array('docs' => $bibs), 'reports.html'); }
function handle(&$params) { $app =& Dataface_Application::getInstance(); $query = $app->getQuery(); $query['-limit'] = 9999999; $table =& Dataface_Table::loadTable($query['-table']); if (isset($query['-relationship']) and @$query['--related']) { $query['-related:start'] = 0; $query['-related:limit'] = 9999999; $record =& $app->getRecord(); $relationship =& $table->getRelationship($query['-relationship']); $records =& df_get_related_records($query); //$record->getRelatedRecordObjects($query['-relationship']); $data = array(); $headings = array(); foreach ($relationship->_schema['short_columns'] as $colhead) { $f =& $relationship->getField($colhead); if (@$f['visibility']['csv'] == 'hidden') { unset($f); continue; } $headings[] = $colhead; unset($f); } $data[] = $headings; foreach ($records as $record) { if (!$record->checkPermission('view')) { continue; } $data[] = $this->related_rec2data($record); } } else { $records =& df_get_records_array($query['-table'], $query, null, null, false); $data = array(); $headings = array(); foreach (array_merge(array_keys($table->fields()), array_keys($table->graftedFields())) as $colhead) { $f =& $table->getField($colhead); if (@$f['visibility']['csv'] == 'hidden') { unset($f); continue; } $headings[] = $colhead; unset($f); } $data[] = $headings; foreach ($records as $record) { if (!$record->checkPermission('view')) { continue; } $data[] = $this->rec2data($record); } } $temp = tmpfile(); foreach ($data as $row) { fputcsv($temp, $row, ",", '"'); } fseek($temp, 0); header("Content-type: text/csv; charset={$app->_conf['oe']}"); header('Content-disposition: attachment; filename="' . $query['-table'] . '_results_' . date('Y_m_d_H_i_s') . '.csv"'); $fstats = fstat($temp); echo fread($temp, $fstats['size']); fclose($temp); exit; }
function handle(&$params) { $app =& Dataface_Application::getInstance(); $query =& $app->getQuery(); $records = df_get_selected_records($query); if (!$records) { if ($query['-mode'] == 'list') { $records = df_get_records_array($query['-table'], $query); } else { $records = array(); $r = $app->getRecord(); if ($r) { $records[] = $r; } } } $jsonProfile = 'basic'; if (@$query['--profile']) { $jsonProfile = $query['--profile']; } $displayMethod = 'val'; if (@$query['--displayMethod'] == 'display') { $displayMethod = 'display'; } else { if (@$query['--displayMethod'] == 'htmlValue') { $displayMethod = 'htmlValue'; } } $out = array(); if (isset($query['--fields'])) { $fields = explode(' ', $query['--fields']); } else { $fields = null; } foreach ($records as $record) { if (!$record->checkPermission('export_json')) { continue; } $del = $record->table()->getDelegate(); $row = null; if (isset($del) and method_exists($del, 'export_json')) { $row = $del->export_json($record, $jsonProfile, $records); } if (!isset($row)) { if (!is_array($fields)) { $fields = array_keys($record->table()->fields(false, true)); } if (is_array($fields)) { $allowed_fields = array(); foreach ($fields as $field) { if (!$record->checkPermission('export_json', array('field' => $field))) { continue; } $allowed_fields[] = $field; } } $row = array(); foreach ($allowed_fields as $fld) { $row[$fld] = $record->{$displayMethod}($fld); } if (@$query['--include-title']) { $row['__title__'] = $record->getTitle(); } if (@$query['--include-id']) { $row['__id__'] = $record->getId(); } } if (isset($del) and method_exists($del, 'filter_json')) { $del->filter_json($record, $row, $jsonProfile, $records); } $out[] = $row; } if (@$query['--single']) { if (count($out) > 0) { $out = $out[0]; } } if (@$query['--var']) { $out = array('code' => 200, $query['--var'] => $out); if (@$query['--stats']) { $queryTool = Dataface_QueryTool::$lastIterated; if (isset($queryTool)) { $out['metaData'] = array('limit' => $queryTool->limit(), 'found' => $queryTool->found(), 'skip' => $queryTool->start()); } else { $out['metaData'] = array('limit' => count($records), 'skip' => 0, 'found' => count($records)); } } } //import('Services/JSON.php'); //$json = new Services_JSON; $enc_out = json_encode($out); header('Content-type: application/json; charset=' . $app->_conf['oe']); header('Connection: close'); echo $enc_out; exit; }
/** * @brief Loads the values for a particular field in a particular table. * * This method is delegated to by handle() for cleanliness purposes. * * @param Dataface_Table $table The table where the depselect field resides. * @param array &$field The field definition of the depselect field. * @param array $query The current GET parameters. * */ private function loadFromTable(Dataface_Table $table, &$field, $query) { try { $perms = $table->getPermissions(array('field' => $field['name'])); if (!@$perms['edit'] and !@$perms['new']) { // The user doesn't have permission to edit the column... so we // need to cut off access right now!!! error_log("Insufficient permissions to access field {$field['name']} by current user."); throw new Exception("Failed to get options for field {$filed['name']} because you don't have view permission for this field.", 401); } if (!@$field['widget']['table']) { error_log("widget:table not defined for field " . $field['name'] . " of table " . $table->tablename . "."); throw new Exception(self::errorMessage($fieldname), 500); } $targetTable = Dataface_Table::loadTable($field['widget']['table']); $filters = array(); if (@$field['widget']['filters'] and is_array($field['widget']['filters'])) { foreach ($field['widget']['filters'] as $key => $val) { if (isset($query[$key])) { $filters[$key] = $query[$key]; } else { if (strpos($val, '$') === 0) { $filters[$key] = '='; } else { $filters[$key] = $val; } } } } $limit = 250; if (@$field['widget']['limit']) { $limit = intval($field['widget']['limit']); } $filters['-limit'] = $limit; $records = df_get_records_array($field['widget']['table'], $filters); //if ( count($filters) > 1 ){ // echo "Num records found: ".count($records); // print_r($filters); //} $keyCol = null; $labelCol = null; $multiLabel = null; if (@$field['widget']['keycol']) { $keyCol = $field['widget']['keycol']; } else { foreach ($targetTable->keys() as $k => $v) { $keyCol = $k; break; } } if (@$field['widget']['labelcol']) { $labelCol = $field['widget']['labelcol']; } else { if (@$field['widget']['multilabelformat']) { $multiLabel = $field['widget']['multilabelformat']; $params = explode('"', $multiLabel); // The first array elements are empty due to the first '"' and ','. $format = $params[1]; $colums = explode(',', $params[2]); array_shift($colums); } } $out = array(); foreach ($records as $r) { if (@$field['widget']['ignore_permissions']) { $r->secureDisplay = false; } else { //if ( !$r->checkPermission('view') ) continue; if (!$r->checkPermission('view', array('field' => $keyCol))) { continue; } if ($labelCol and !$r->checkPermission('view', array('field' => $labelCol))) { continue; } } if ($labelCol) { $temp = array($r->val($keyCol) => $r->display($labelCol)); } else { if ($multiLabel) { $values = array(); foreach ($colums as $field) { $values[] = $r->display(trim($field)); } $temp = array($r->val($keyCol) => vsprintf($format, $values)); } else { $temp = array($r->val($keyCol) => $r->getTitle()); } } $out[] = $temp; } $this->out(array('code' => 200, 'message' => 'Received default valuelist', 'values' => $out)); exit; } catch (Exception $ex) { $this->out(array('code' => $ex->getCode(), 'message' => $ex->getMessage())); exit; } }
<?php session_start(); require_once 'BaseTest.php'; require_once 'Dataface/dhtmlxGrid/activegrid.php'; $test = new BaseTest(); $test->setUp(); $s =& Dataface_Table::loadTable('Profiles'); $records = df_get_records_array('Profiles'); if (@$_REQUEST['-action'] == 'update_grid') { $app =& Dataface_Application::getInstance(); $app->display(); exit; } $grid = new Dataface_dhtmlxGrid_activegrid(array('-table' => 'Profiles')); if ($_GET['--dhtmlxGrid_xml']) { if (stristr($_SERVER["HTTP_ACCEPT"], "application/xhtml+xml")) { header("Content-type: application/xhtml+xml"); } else { header("Content-type: text/xml"); } echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"; echo $grid->toXML(); } else { echo "<html><body>"; echo $grid->toHTML(); echo <<<END \t<div id="output_div"></div> \t<script> \tfunction serializeGrid(){ \tvar output_div = document.getElementById('output_div');
/** * @brief Loads the buffer according to the current position of the found set. */ private function loadBuffer() { if ($this->currPos >= $this->bufferStartPos + $this->bufferSize) { $this->bufferStartPos += $this->bufferSize; } else { if (!isset($this->bufferStartPos)) { $this->bufferStartPos = $this->start; } else { return; } } $q = $this->query; $q['-skip'] = $this->bufferStartPos; $q['-limit'] = $this->bufferSize; if (isset($this->limit)) { $q['-limit'] = min($this->bufferSize, $this->start + $this->limit - $this->bufferStartPos); } if ($q['-limit'] > 0) { $this->buffer = df_get_records_array($q['-table'], $q, $q['-skip'], $q['-limit'], $this->previewRecords); } else { $this->buffer = array(); } }
function indexFoundRecords($query, $lang = '*') { for ($start = 0; $start >= 0; $start += 100) { // We do it in chunks of 100 $records = df_get_records_array($query['-table'], $query, $start, 100, false); if (!$records or count($records) == 0 or PEAR::isError($records)) { return true; } foreach ($records as $record) { $this->indexRecord($record, $lang); } unset($records); } }
/** * Sends reset email to a particular email address. This first checks to see if * the email address belongs to a valid user account. * * @param string $email The email address to send to. * @return void * * @throws Exception Code: self::$EX_MULTIPLE_USERS_WITH_SAME_EMAIL * @throws Exception Code: self::$EX_NO_USERS_WITH_EMAIL * @throws Exception Code: self::$EX_NO_EMAIL_COLUMN_FOUND */ function send_reset_email_for_email($email) { $auth = Dataface_AuthenticationTool::getInstance(); $emailCol = $auth->getEmailColumn(); if (!$emailCol) { throw new Exception(df_translate('actions.forgot_password.no_email_column_found', "No Email Column found in the users table. Please specify one using the email_column directive in the [_auth] section of the conf.ini file."), self::$EX_NO_EMAIL_COLUMN_FOUND); } $people = df_get_records_array($auth->usersTable, array($emailCol => '=' . $email)); if (!$people) { throw new Exception(df_translate('actions.forgot_password.no_account_for_email', "No account found with that email address"), self::$EX_NO_USERS_WITH_EMAIL); } if (count($people) > 1) { throw new Exception(df_translate('actions.forgot_password.multiple_users_for_email', "Multiple users found with same email address"), self::$EX_MULTIPLE_USERS_WITH_SAME_EMAIL); } else { $this->send_reset_email_for_user($people[0]); } }
function handle(&$params) { $homework = df_get_records_array('homework', array()); df_display(array('homework' => $homework), 'dashboard.html'); }