예제 #1
0
파일: webpages.php 프로젝트: gtoffoli/swete
 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')));
     }
 }
예제 #2
0
 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();
 }
예제 #3
0
 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;
         }
     }
 }
예제 #5
0
    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>';
    }
예제 #6
0
 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;
 }
예제 #7
0
 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');
 }
예제 #8
0
파일: DataGrid.php 프로젝트: promoso/HVAC
 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;
 }
예제 #9
0
 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')));
     }
 }
예제 #10
0
파일: activegrid.php 프로젝트: promoso/HVAC
 /**
  * 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);
 }
예제 #11
0
 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;
 }
예제 #12
0
파일: websites.php 프로젝트: gtoffoli/swete
 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'));
     }
 }
예제 #13
0
 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');
 }
예제 #14
0
 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;
 }
예제 #15
0
 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;
 }
예제 #16
0
 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');
 }
예제 #17
0
 /**
  * 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);
     }
 }
예제 #18
0
 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;
 }
예제 #19
0
 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);
 }
예제 #20
0
 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;
 }
예제 #21
0
 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;
 }
예제 #22
0
파일: reports.php 프로젝트: promoso/HVAC
 function handle(&$params)
 {
     $bibs = df_get_records_array('docs', array());
     df_display(array('docs' => $bibs), 'reports.html');
 }
예제 #23
0
파일: export_csv.php 프로젝트: promoso/HVAC
 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;
 }
예제 #24
0
 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;
     }
 }
예제 #26
0
<?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');
예제 #27
0
 /**
  * @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();
     }
 }
예제 #28
0
파일: Index.php 프로젝트: promoso/HVAC
 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);
     }
 }
예제 #29
0
 /**
  * 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]);
     }
 }
예제 #30
0
 function handle(&$params)
 {
     $homework = df_get_records_array('homework', array());
     df_display(array('homework' => $homework), 'dashboard.html');
 }