本文整理汇总了PHP中TimeExpressionParser::getUnixTimestamps方法的典型用法代码示例。如果您正苦于以下问题:PHP TimeExpressionParser::getUnixTimestamps方法的具体用法?PHP TimeExpressionParser::getUnixTimestamps怎么用?PHP TimeExpressionParser::getUnixTimestamps使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TimeExpressionParser
的用法示例。
在下文中一共展示了TimeExpressionParser::getUnixTimestamps方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testGets
public function testGets()
{
$vm_ret = $this->opt_object->get('ca_objects.type_id', array('convertCodesToDisplayText' => true));
$this->assertEquals('Moving Image', $vm_ret);
$vm_ret = $this->opt_object->get('ca_objects.preferred_labels');
$this->assertEquals('My test moving image', $vm_ret);
$vm_ret = $this->opt_object->get('ca_objects.duration');
$this->assertEquals('0:23:28', $vm_ret);
$vm_ret = $this->opt_object->get('ca_objects.access');
$this->assertEquals('0', $vm_ret);
$vm_ret = $this->opt_object->get('ca_objects.access', array('convertCodesToDisplayText' => true));
$this->assertEquals('not accessible to public', $vm_ret);
$o_tep = new TimeExpressionParser();
$vn_now = time();
$vm_ret = $this->opt_object->get('ca_objects.lastModified');
$this->assertTrue($o_tep->parse($vm_ret));
$va_modified_unix = $o_tep->getUnixTimestamps();
//$this->assertEquals($vn_now, $va_modified_unix['start'], 'lastModified timestamp cannot be more than 1 minute off', 60);
}
示例2: testGets
public function testGets()
{
$vm_ret = $this->opt_object->get('ca_objects.type_id', array('convertCodesToDisplayText' => true));
$this->assertEquals('Moving Image', $vm_ret);
$vm_ret = $this->opt_object->get('ca_objects.preferred_labels');
$this->assertEquals('My test moving image', $vm_ret);
$vm_ret = $this->opt_object->get('ca_objects.duration');
$this->assertEquals('0:23:28', $vm_ret);
$vm_ret = $this->opt_object->get('ca_item_comments.comment');
$this->assertEquals('I like this very much.', $vm_ret);
$this->assertTrue(!is_numeric($this->opt_object->get('ca_item_comments.created_on')));
// should always be current date/time as text
$o_tep = new TimeExpressionParser();
$vn_now = time();
$vm_ret = $this->opt_object->get('ca_objects.lastModified');
$this->assertTrue($o_tep->parse($vm_ret));
$va_modified_unix = $o_tep->getUnixTimestamps();
//$this->assertEquals($vn_now, $va_modified_unix['start'], 'lastModified timestamp cannot be more than 1 minute off', 60);
}
示例3: search
/**
*
*/
public function search($ps_datetime_expression, $ps_code = null)
{
$o_tep = new TimeExpressionParser();
if ($o_tep->parse($ps_datetime_expression)) {
list($vn_period_start, $vn_period_end) = $o_tep->getUnixTimestamps();
if ($vn_period_start && $vn_period_end) {
$o_db = new Db();
$qr_log = $o_db->query("\n\t\t\t\t\tSELECT sl.*, u.fname, u.lname, u.email, sfl.name form\n\t\t\t\t\tFROM ca_search_log sl\n\t\t\t\t\tLEFT JOIN ca_users AS u ON sl.user_id = u.user_id\n\t\t\t\t\tLEFT JOIN ca_search_form_labels AS sfl ON sl.form_id = sfl.form_id\n\t\t\t\t\tWHERE \n\t\t\t\t\t\t(log_datetime BETWEEN {$vn_period_start} AND {$vn_period_end})\n\t\t\t\t\tORDER BY log_datetime DESC\n\t\t\t\t");
$o_dm = Datamodel::load();
$va_rows = array();
while ($qr_log->nextRow()) {
$va_row = $qr_log->getRow();
$t_table = $o_dm->getInstanceByTableNum($va_row['table_num'], true);
$va_row['table_name'] = $t_table->getProperty('NAME_PLURAL');
$va_row['user_name'] = $va_row['fname'] . ' ' . $va_row['lname'];
$va_rows[$va_row['search_id']] = $va_row;
}
return $va_rows;
}
}
return null;
}
示例4: set
//.........这里部分代码省略.........
}
$this->_FIELD_VALUES[$vs_field] = $vm_value ? 1 : 0;
break;
case FT_DATETIME:
case FT_HISTORIC_DATETIME:
case FT_DATE:
case FT_HISTORIC_DATE:
if ($this->DIRECT_DATETIMES || $pa_options["SET_DIRECT_DATE"]) {
$this->_FIELD_VALUES[$vs_field] = $vm_value;
$this->_FIELD_VALUE_CHANGED[$vs_field] = true;
} else {
if (!$vm_value && $this->FIELDS[$vs_field]["IS_NULL"]) {
if ($vs_cur_value) {
$this->_FIELD_VALUE_CHANGED[$vs_field] = true;
}
$this->_FIELD_VALUES[$vs_field] = null;
} else {
$o_tep = new TimeExpressionParser();
if ($pa_fields_type == FT_DATE || $pa_fields_type == FT_HISTORIC_DATE) {
$va_timestamps = $o_tep->parseDate($vm_value);
} else {
$va_timestamps = $o_tep->parseDatetime($vm_value);
}
if (!$va_timestamps) {
$this->postError(1805, $o_tep->getParseErrorMessage(), 'BaseModel->set()', $this->tableName() . '.' . $vs_field);
return false;
}
if ($pa_fields_type == FT_HISTORIC_DATETIME || $pa_fields_type == FT_HISTORIC_DATE) {
if ($vs_cur_value != $va_timestamps["start"]) {
$this->_FIELD_VALUES[$vs_field] = $va_timestamps["start"];
$this->_FIELD_VALUE_CHANGED[$vs_field] = true;
}
} else {
$va_timestamps = $o_tep->getUnixTimestamps();
if ($va_timestamps[0] == -1) {
$this->postError(1830, $o_tep->getParseErrorMessage(), 'BaseModel->set()', $this->tableName() . '.' . $vs_field);
return false;
}
if ($vs_cur_value != $va_timestamps["start"]) {
$this->_FIELD_VALUES[$vs_field] = $va_timestamps["start"];
$this->_FIELD_VALUE_CHANGED[$vs_field] = true;
}
}
}
}
break;
case FT_TIME:
if ($this->DIRECT_TIMES || $pa_options["SET_DIRECT_TIME"]) {
$this->_FIELD_VALUES[$vs_field] = $vm_value;
} else {
if (!$vm_value && $this->FIELDS[$vs_field]["IS_NULL"]) {
if ($vs_cur_value) {
$this->_FIELD_VALUE_CHANGED[$vs_field] = true;
}
$this->_FIELD_VALUES[$vs_field] = null;
} else {
$o_tep = new TimeExpressionParser();
if (!$o_tep->parseTime($vm_value)) {
$this->postError(1805, $o_tep->getParseErrorMessage(), 'BaseModel->set()', $this->tableName() . '.' . $vs_field);
return false;
}
$va_times = $o_tep->getTimes();
if ($vs_cur_value != $va_times['start']) {
$this->_FIELD_VALUES[$vs_field] = $va_times['start'];
$this->_FIELD_VALUE_CHANGED[$vs_field] = true;
}
示例5: _doQueriesForSqlSearch
//.........这里部分代码省略.........
$vs_to_stem = preg_replace('!\\*$!u', '', $vs_term);
if (!preg_match('!y$!u', $vs_to_stem) && !preg_match('![0-9]+!', $vs_to_stem)) {
// don't stem things ending in 'y' as that can cause problems (eg "Bowery" becomes "Boweri")
if (!($vs_stem = trim($this->opo_stemmer->stem($vs_to_stem)))) {
$vs_stem = (string) $vs_term;
}
$va_ft_stem_terms[] = "'" . $this->opo_db->escape($vs_stem) . "'";
} else {
$va_ft_terms[] = '"' . $this->opo_db->escape($vs_term) . '"';
}
} else {
$va_ft_terms[] = '"' . $this->opo_db->escape($vs_term) . '"';
}
$vb_output_term = true;
}
}
if ($vb_output_term) {
$va_raw_terms[] = $vs_term;
} else {
$vn_i--;
}
break;
}
$vs_fld_num = $vs_table_num = $t_table = null;
$vb_ft_bit_optimization = false;
if ($vs_access_point) {
list($vs_table, $vs_field, $vs_sub_field) = explode('.', $vs_access_point);
if (in_array($vs_table, array('created', 'modified'))) {
$o_tep = new TimeExpressionParser();
$vs_date = join(' ', $va_raw_terms);
if (!$o_tep->parse($vs_date)) {
break;
}
$va_range = $o_tep->getUnixTimestamps();
$vn_user_id = null;
if ($vs_field = trim($vs_field)) {
if (!is_int($vs_field)) {
$t_user = new ca_users();
if ($t_user->load(array("user_name" => $vs_field))) {
$vn_user_id = (int) $t_user->getPrimaryKey();
}
} else {
$vn_user_id = (int) $vs_field;
}
}
$vs_user_sql = $vn_user_id ? " AND (ccl.user_id = " . (int) $vn_user_id . ")" : "";
switch ($vs_table) {
case 'created':
$vs_direct_sql_query = "\n\t\t\t\t\t\t\t\t\t\t\tSELECT ccl.logged_row_id, 1\n\t\t\t\t\t\t\t\t\t\t\tFROM ca_change_log ccl\n\t\t\t\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t\t\t\t(ccl.log_datetime BETWEEN " . (int) $va_range['start'] . " AND " . (int) $va_range['end'] . ")\n\t\t\t\t\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t\t\t\t\t(ccl.logged_table_num = ?)\n\t\t\t\t\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t\t\t\t\t(ccl.changetype = 'I')\n\t\t\t\t\t\t\t\t\t\t\t\t{$vs_user_sql}\n\t\t\t\t\t\t\t\t\t\t";
break;
case 'modified':
$vs_direct_sql_query = "\n\t\t\t\t\t\t\t\t\t\t\tSELECT ccl.logged_row_id, 1\n\t\t\t\t\t\t\t\t\t\t\tFROM ca_change_log ccl\n\t\t\t\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t\t\t\t(ccl.log_datetime BETWEEN " . (int) $va_range['start'] . " AND " . (int) $va_range['end'] . ")\n\t\t\t\t\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t\t\t\t\t(ccl.logged_table_num = ?)\n\t\t\t\t\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t\t\t\t\t(ccl.changetype = 'U')\n\t\t\t\t\t\t\t\t\t\t\t\t{$vs_user_sql}\n\t\t\t\t\t\t\t\t\t\tUNION\n\t\t\t\t\t\t\t\t\t\t\tSELECT ccls.subject_row_id, 1\n\t\t\t\t\t\t\t\t\t\t\tFROM ca_change_log ccl\n\t\t\t\t\t\t\t\t\t\t\tINNER JOIN ca_change_log_subjects AS ccls ON ccls.log_id = ccl.log_id\n\t\t\t\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t\t\t\t(ccl.log_datetime BETWEEN " . (int) $va_range['start'] . " AND " . (int) $va_range['end'] . ")\n\t\t\t\t\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t\t\t\t\t(ccls.subject_table_num = {$pn_subject_tablenum})\n\t\t\t\t\t\t\t\t\t\t\t\t{$vs_user_sql}\n\t\t\t\t\t\t\t\t\t\t";
break;
}
} else {
if ($vs_table && $vs_field) {
$t_table = $this->opo_datamodel->getInstanceByTableName($vs_table, true);
if ($t_table) {
$vs_table_num = $t_table->tableNum();
if (is_numeric($vs_field)) {
$vs_fld_num = 'I' . $vs_field;
$vn_fld_num = (int) $vs_field;
} else {
$vn_fld_num = $this->getFieldNum($vs_table, $vs_field);
$vs_fld_num = 'I' . $vn_fld_num;
if (!strlen($vn_fld_num)) {
示例6: execute
//.........这里部分代码省略.........
foreach ($va_acc[$vn_smallest_list_index] as $vn_row_id => $vb_dummy) {
foreach ($va_acc_indices as $vn_i) {
if ($vn_i == $vn_smallest_list_index) {
continue;
}
if (!isset($va_acc[$vn_i][$vn_row_id])) {
continue 2;
}
}
$va_res[$vn_row_id] = true;
}
}
if (sizeof($va_res)) {
$vs_filter_join_sql = $vs_filter_where_sql = '';
$va_wheres = array();
$va_joins = array();
$vs_sql_distinct = '';
if (sizeof($this->opa_result_filters)) {
$va_tmp = array();
foreach ($this->opa_result_filters as $va_filter) {
$vm_val = $this->_filterValueToQueryValue($va_filter);
$va_wheres[] = $this->ops_browse_table_name . '.' . $va_filter['field'] . " " . $va_filter['operator'] . " " . $vm_val;
}
}
if (isset($pa_options['checkAccess']) && is_array($pa_options['checkAccess']) && sizeof($pa_options['checkAccess']) && $t_item->hasField('access')) {
$va_wheres[] = "(" . $this->ops_browse_table_name . ".access IN (" . join(',', $pa_options['checkAccess']) . "))";
}
if ((!isset($pa_options['showDeleted']) || !$pa_options['showDeleted']) && $t_item->hasField('deleted')) {
$va_wheres[] = "(" . $this->ops_browse_table_name . ".deleted = 0)";
}
if (isset($pa_options['limitToModifiedOn']) && $pa_options['limitToModifiedOn']) {
$o_tep = new TimeExpressionParser();
if ($o_tep->parse($pa_options['limitToModifiedOn'])) {
$va_range = $o_tep->getUnixTimestamps();
$va_joins['ca_change_log_subjects'] = "INNER JOIN ca_change_log_subjects ON ca_change_log_subjects.subject_row_id = " . $this->ops_browse_table_name . "." . $t_item->primaryKey() . " AND ca_change_log_subjects.subject_table_num = " . $t_item->tableNum();
$va_joins['ca_change_log'] = "INNER JOIN ca_change_log ON ca_change_log.log_id = ca_change_log_subjects.log_id";
$va_wheres[] = "(((ca_change_log.log_datetime BETWEEN " . (int) $va_range['start'] . " AND " . (int) $va_range['end'] . ") AND (ca_change_log.changetype IN ('I', 'U', 'D'))))";
$vs_sql_distinct = 'DISTINCT';
// need to pull distinct rows since joining the change log can cause dupes
}
}
if (($va_browse_type_ids = $this->getTypeRestrictionList()) && sizeof($va_browse_type_ids)) {
$t_subject = $this->getSubjectInstance();
$va_wheres[] = '(' . $this->ops_browse_table_name . '.' . $t_subject->getTypeFieldName() . ' IN (' . join(', ', $va_browse_type_ids) . ')' . ($t_subject->getFieldInfo('type_id', 'IS_NULL') ? " OR (" . $this->ops_browse_table_name . '.' . $t_subject->getTypeFieldName() . " IS NULL)" : '') . ')';
}
if (is_array($va_browse_source_ids) && sizeof($va_browse_source_ids)) {
$va_wheres[] = '(' . $this->ops_browse_table_name . '.' . $t_subject->getSourceFieldName() . ' IN (' . join(', ', $va_browse_source_ids) . ') OR (' . $this->ops_browse_table_name . '.' . $t_subject->getSourceFieldName() . ' IS NULL))';
}
$vs_filter_where_sql = "WHERE (" . $this->ops_browse_table_name . "." . $t_item->primaryKey() . " IN (?)) ";
if (sizeof($va_wheres)) {
$vs_filter_where_sql .= ' AND (' . join(' AND ', $va_wheres) . ')';
}
if (sizeof($va_joins)) {
$vs_filter_join_sql = join("\n", $va_joins);
}
$qr_res = $this->opo_db->query("\n\t\t\t\t\t\t\tSELECT {$vs_sql_distinct} " . $this->ops_browse_table_name . "." . $t_item->primaryKey() . "\n\t\t\t\t\t\t\tFROM " . $this->ops_browse_table_name . "\n\t\t\t\t\t\t\t{$vs_filter_join_sql}\n\t\t\t\t\t\t\t{$vs_filter_where_sql}\n\t\t\t\t\t\t", array(array_keys($va_res)));
$va_results = $qr_res->getAllFieldValues($t_item->primaryKey());
if ((!isset($pa_options['dontFilterByACL']) || !$pa_options['dontFilterByACL']) && $this->opo_config->get('perform_item_level_access_checking') && method_exists($t_item, "supportsACL") && $t_item->supportsACL()) {
$va_results = $this->filterHitsByACL($va_results, $this->opn_browse_table_num, $vn_user_id, __CA_ACL_READONLY_ACCESS__);
}
$this->opo_ca_browse_cache->setResults($va_results);
$vb_need_to_save_in_cache = true;
} else {
// No results for some reason - we're here because we don't want to throw a SQL error
$this->opo_ca_browse_cache->setResults($va_results = array());
$vb_need_to_save_in_cache = true;
示例7: caDateToUnixTimestamp
/**
* Parses natural language date and returns a Unix timestamp
*
* @param string $ps_date_expression A valid date/time expression as described in http://docs.collectiveaccess.org/wiki/Date_and_Time_Formats
* @return int A Unix timestamp for the date expression or null if expression cannot be parsed.
*/
function caDateToUnixTimestamp($ps_date_expression)
{
$o_tep = new TimeExpressionParser();
if ($o_tep->parse($ps_date_expression)) {
$va_date = $o_tep->getUnixTimestamps();
return isset($va_date['start']) ? $va_date['start'] : null;
}
return null;
}
示例8: now
/**
* Return current date/time
*
* @param array $pa_options Options include:
* format = format of return value. Options are:
* unix = Unix-timestamp
* historic = Historic timestamp
* [Default is historic]
*
*/
public static function now($pa_options = null)
{
$ps_format = caGetOption('format', $pa_options, null, ['toLowerCase' => true]);
$o_tep = new TimeExpressionParser();
$o_tep->parse(__TEP_NOW__);
switch ($ps_format) {
case 'unix':
return array_shift($o_tep->getUnixTimestamps());
break;
case 'historic':
default:
return array_shift($o_tep->getHistoricTimestamps());
break;
}
return null;
}
示例9: search
/**
*
*/
public function search($ps_datetime_expression, $ps_code = null)
{
$o_tep = new TimeExpressionParser();
if ($o_tep->parse($ps_datetime_expression)) {
list($vn_period_start, $vn_period_end) = $o_tep->getUnixTimestamps();
if ($vn_period_start && $vn_period_end) {
$o_db = new Db();
$qr_codes = $o_db->query("SELECT DISTINCT code FROM ca_eventlog ORDER BY code");
$va_codes = array();
while ($qr_codes->nextRow()) {
$va_codes[] = $qr_codes->get("code");
}
if (in_array($ps_code, $va_codes)) {
$qr_log = $o_db->query("\n\t\t\t\t\t\tSELECT *\n\t\t\t\t\t\tFROM ca_eventlog\n\t\t\t\t\t\tWHERE \n\t\t\t\t\t\t\t(date_time BETWEEN {$vn_period_start} AND {$vn_period_end}) \n\t\t\t\t\t\t\tAND (code = ?)\n\t\t\t\t\t\tORDER BY date_time DESC\n\t\t\t\t\t", $ps_code);
} else {
$qr_log = $o_db->query("\n\t\t\t\t\t\tSELECT *\n\t\t\t\t\t\tFROM ca_eventlog\n\t\t\t\t\t\tWHERE \n\t\t\t\t\t\t\t(date_time BETWEEN {$vn_period_start} AND {$vn_period_end})\n\t\t\t\t\t\tORDER BY date_time DESC\n\t\t\t\t\t");
}
return $qr_log->getAllRows();
}
}
return null;
}
示例10: getMessages
/**
* Gets list of messages conforming to specified options.
* @param array $pa_options
* readOnly =
* unreadOnly =
* user_id =
* created_on =
* transaction_id =
* type =
* @return array
*/
public function getMessages($pn_user_id, $pa_options = null)
{
$o_db = $this->getDb();
$pb_read_only = (bool) (isset($pa_options['readOnly']) && $pa_options['readOnly']);
$pb_unread_only = (bool) (isset($pa_options['unreadOnly']) && $pa_options['unreadOnly']);
$pn_restrict_to_transaction_user_id = isset($pa_options['user_id']) && (int) $pa_options['user_id'] ? (int) $pa_options['user_id'] : null;
$ps_created_on = isset($pa_options['created_on']) && (string) $pa_options['created_on'] ? (string) $pa_options['created_on'] : null;
$va_sql_wheres = array();
$va_sql_params = array();
if ($pn_restrict_to_transaction_user_id) {
$va_sql_wheres[] = "tra.user_id = ?";
$va_sql_params[] = $pn_restrict_to_transaction_user_id;
}
if (is_array($pa_options) && array_key_exists('transaction_id', $pa_options)) {
$va_sql_wheres[] = "tra.transaction_id = ?";
$va_sql_params[] = (int) $pa_options['transaction_id'];
}
if ($ps_created_on) {
$o_tep = new TimeExpressionParser();
if ($o_tep->parse($ps_created_on) && ($va_dates = $o_tep->getUnixTimestamps())) {
$va_sql_wheres[] = "(comm.created_on BETWEEN ? AND ?)";
$va_sql_params[] = $va_dates['start'];
$va_sql_params[] = $va_dates['end'];
}
}
if (isset($pa_options['type']) && in_array($pa_options['type'], array('O', 'L'))) {
$va_sql_wheres[] = "(comm.communication_type = ?)";
$va_sql_params[] = (string) $pa_options['type'];
}
if (isset($pa_options['search']) && strlen($pa_options['search'])) {
$o_search = new CommerceCommunicationSearch();
if ($qr_hits = $o_search->search($pa_options['search'])) {
$va_ids = array();
while ($qr_hits->nextHit()) {
$va_ids[] = $qr_hits->get('communication_id');
}
if (sizeof($va_ids)) {
$va_sql_wheres[] = "(comm.communication_id IN (?))";
$va_sql_params[] = $va_ids;
} else {
$va_sql_wheres[] = "(comm.communication_id = 0)";
}
}
}
if ($pb_read_only) {
$va_sql_wheres[] = "(comm.read_on IS NOT NULL) AND (comm.from_user_id <> " . (int) $pn_user_id . ")";
}
if ($pb_unread_only) {
$va_sql_wheres[] = "(comm.read_on IS NULL) AND (comm.from_user_id <> " . (int) $pn_user_id . ")";
}
$qr_res = $o_db->query($vs_sql = "\n\t \t\tSELECT comm.*, tra.short_description, tra.transaction_id, tra.created_on transaction_created_on, tra.set_id\n\t \t\tFROM ca_commerce_communications comm\n\t \t\tINNER JOIN ca_commerce_transactions AS tra ON tra.transaction_id = comm.transaction_id\n\t \t\t" . (sizeof($va_sql_wheres) ? " WHERE " . join(" AND ", $va_sql_wheres) : '') . "\n\t \t\tORDER BY\n\t \t\t\tcomm.created_on DESC\n\t \t", $va_sql_params);
//print $vs_sql;
$va_messages = array();
while ($qr_res->nextRow()) {
$va_messages[$qr_res->get('transaction_id')][] = $qr_res->getRow();
}
return $va_messages;
}
示例11: _doQueriesForSqlSearch
//.........这里部分代码省略.........
if ($vb_do_stemming) {
$vs_to_stem = preg_replace('!\\*$!u', '', $vs_term);
if (!preg_match('!y$!u', $vs_to_stem) && !preg_match('![0-9]+!', $vs_to_stem)) {
// don't stem things ending in 'y' as that can cause problems (eg "Bowery" becomes "Boweri")
if (!($vs_stem = trim($this->opo_stemmer->stem($vs_to_stem)))) {
$vs_stem = (string) $vs_term;
}
$va_ft_stem_terms[] = "'" . $this->opo_db->escape($vs_stem) . "'";
} else {
$va_ft_terms[] = '"' . $this->opo_db->escape($vs_term) . '"';
}
} else {
$va_ft_terms[] = '"' . $this->opo_db->escape($vs_term) . '"';
}
}
$vb_output_term = true;
}
if ($vb_output_term) {
$va_raw_terms[] = $vs_term;
}
}
break;
}
$vs_fld_num = $vs_table_num = $t_table = null;
$vb_ft_bit_optimization = false;
if ($vs_access_point) {
list($vs_table, $vs_field, $vs_sub_field) = explode('.', $vs_access_point);
if (in_array($vs_table, array('created', 'modified'))) {
$o_tep = new TimeExpressionParser();
$vs_date = join(' ', $va_raw_terms);
if (!$o_tep->parse($vs_date)) {
break;
}
$va_range = $o_tep->getUnixTimestamps();
$vn_user_id = null;
if ($vs_field = trim($vs_field)) {
if (!is_int($vs_field)) {
$t_user = new ca_users();
if ($t_user->load(array("user_name" => $vs_field))) {
$vn_user_id = (int) $t_user->getPrimaryKey();
}
} else {
$vn_user_id = (int) $vs_field;
}
}
$vs_user_sql = $vn_user_id ? " AND (ccl.user_id = " . (int) $vn_user_id . ")" : "";
switch ($vs_table) {
case 'created':
$vs_direct_sql_query = "\n\t\t\t\t\t\t\t\t\t\t\tSELECT ccl.logged_row_id row_id, 1\n\t\t\t\t\t\t\t\t\t\t\tFROM ca_change_log ccl\n\t\t\t\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t\t\t\t(ccl.log_datetime BETWEEN " . (int) $va_range['start'] . " AND " . (int) $va_range['end'] . ")\n\t\t\t\t\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t\t\t\t\t(ccl.logged_table_num = ?)\n\t\t\t\t\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t\t\t\t\t(ccl.changetype = 'I')\n\t\t\t\t\t\t\t\t\t\t\t\t{$vs_user_sql}\n\t\t\t\t\t\t\t\t\t\t";
break;
case 'modified':
$vs_direct_sql_query = "\n\t\t\t\t\t\t\t\t\t\t\tSELECT ccl.logged_row_id row_id, 1\n\t\t\t\t\t\t\t\t\t\t\tFROM ca_change_log ccl\n\t\t\t\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t\t\t\t(ccl.log_datetime BETWEEN " . (int) $va_range['start'] . " AND " . (int) $va_range['end'] . ")\n\t\t\t\t\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t\t\t\t\t(ccl.logged_table_num = ?)\n\t\t\t\t\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t\t\t\t\t(ccl.changetype = 'U')\n\t\t\t\t\t\t\t\t\t\t\t\t{$vs_user_sql}\n\t\t\t\t\t\t\t\t\t\tUNION\n\t\t\t\t\t\t\t\t\t\t\tSELECT ccls.subject_row_id row_id, 1\n\t\t\t\t\t\t\t\t\t\t\tFROM ca_change_log ccl\n\t\t\t\t\t\t\t\t\t\t\tINNER JOIN ca_change_log_subjects AS ccls ON ccls.log_id = ccl.log_id\n\t\t\t\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t\t\t\t(ccl.log_datetime BETWEEN " . (int) $va_range['start'] . " AND " . (int) $va_range['end'] . ")\n\t\t\t\t\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t\t\t\t\t(ccls.subject_table_num = {$pn_subject_tablenum})\n\t\t\t\t\t\t\t\t\t\t\t\t{$vs_user_sql}\n\t\t\t\t\t\t\t\t\t\t";
break;
}
} else {
if ($vs_table && $vs_field && ($t_table = $this->opo_datamodel->getInstanceByTableName($vs_table, true))) {
$vs_table_num = $t_table->tableNum();
if (is_numeric($vs_field)) {
$vs_fld_num = 'I' . $vs_field;
$vn_fld_num = (int) $vs_field;
} else {
$vn_fld_num = $this->getFieldNum($vs_table, $vs_field);
$vs_fld_num = 'I' . $vn_fld_num;
$vn_direct_sql_target_table_num = $vs_table_num;
if (!strlen($vn_fld_num)) {
$t_element = new ca_metadata_elements();
示例12: testParseNowDate
public function testParseNowDate()
{
$o_tep = new TimeExpressionParser();
$vb_res = $o_tep->parse('now');
$this->assertEquals($vb_res, true);
$va_parse = $o_tep->getUnixTimestamps();
$this->assertEquals($va_parse['start'], $t = time());
$this->assertEquals($va_parse['end'], $t);
$this->assertEquals($va_parse[0], $t);
$this->assertEquals($va_parse[1], $t);
}
示例13: getOrders
//.........这里部分代码省略.........
$va_sql_wheres[] = "(o.created_on BETWEEN ? AND ?)";
$va_sql_values[] = (double) $va_dates['start'];
$va_sql_values[] = (double) $va_dates['end'];
}
}
if (isset($pa_options['object_id']) && strlen($pa_options['object_id'])) {
$va_sql_wheres[] = "(i.object_id = ?)";
$va_sql_values[] = (int) $pa_options['object_id'];
}
if (isset($pa_options['loan_checkout_date']) && strlen($pa_options['loan_checkout_date'])) {
if (is_array($va_dates = caDateToUnixTimestamps($pa_options['loan_checkout_date']))) {
$va_sql_wheres[] = "(i.loan_checkout_date BETWEEN ? AND ?)";
$va_sql_values[] = (double) $va_dates['start'];
$va_sql_values[] = (double) $va_dates['end'];
}
}
if (isset($pa_options['loan_due_date']) && strlen($pa_options['loan_due_date'])) {
if (is_array($va_dates = caDateToUnixTimestamps($pa_options['loan_due_date']))) {
$va_sql_wheres[] = "(i.loan_due_date BETWEEN ? AND ?)";
$va_sql_values[] = (double) $va_dates['start'];
$va_sql_values[] = (double) $va_dates['end'];
}
}
if (isset($pa_options['loan_return_date']) && strlen($pa_options['loan_return_date'])) {
if (is_array($va_dates = caDateToUnixTimestamps($pa_options['loan_return_date']))) {
$va_sql_wheres[] = "(i.loan_return_date BETWEEN ? AND ?)";
$va_sql_values[] = (double) $va_dates['start'];
$va_sql_values[] = (double) $va_dates['end'];
}
}
if (isset($pa_options['shipping_date']) && strlen($pa_options['shipping_date'])) {
$o_tep = new TimeExpressionParser();
if ($o_tep->parse($pa_options['shipping_date'])) {
$va_dates = $o_tep->getUnixTimestamps();
$va_sql_wheres[] = "(o.shipping_date BETWEEN ? AND ?)";
$va_sql_values[] = (double) $va_dates['start'];
$va_sql_values[] = (double) $va_dates['end'];
}
}
if (isset($pa_options['shipped_on_date']) && strlen($pa_options['shipped_on_date'])) {
$o_tep = new TimeExpressionParser();
if ($o_tep->parse($pa_options['shipped_on_date'])) {
$va_dates = $o_tep->getUnixTimestamps();
$va_sql_wheres[] = "(o.shipped_on_date BETWEEN ? AND ?)";
$va_sql_values[] = (double) $va_dates['start'];
$va_sql_values[] = (double) $va_dates['end'];
}
}
if (isset($pa_options['search']) && strlen($pa_options['search'])) {
$o_search = new CommerceOrderSearch();
if ($qr_hits = $o_search->search($pa_options['search'])) {
$va_ids = array();
while ($qr_hits->nextHit()) {
$va_ids[] = $qr_hits->get('order_id');
}
if (sizeof($va_ids)) {
$va_sql_wheres[] = "(o.order_id IN (?))";
$va_sql_values[] = $va_ids;
} else {
$va_sql_wheres[] = "(o.order_id = 0)";
}
}
}
$vs_sql_wheres = '';
if (sizeof($va_sql_wheres)) {
$vs_sql_wheres = " AND " . join(" AND ", $va_sql_wheres);
示例14: set
//.........这里部分代码省略.........
}
$this->_FIELD_VALUES[$vs_field] = $vm_value ? 1 : 0;
break;
case FT_DATETIME:
case FT_HISTORIC_DATETIME:
case FT_DATE:
case FT_HISTORIC_DATE:
if ($this->DIRECT_DATETIMES || $pa_options["SET_DIRECT_DATE"]) {
$this->_FIELD_VALUES[$vs_field] = $vm_value;
$this->_FIELD_VALUE_CHANGED[$vs_field] = true;
} else {
if (!$vm_value && $this->FIELDS[$vs_field]["IS_NULL"]) {
if ($vs_cur_value) {
$this->_FIELD_VALUE_CHANGED[$vs_field] = true;
}
$this->_FIELD_VALUES[$vs_field] = null;
} else {
$o_tep = new TimeExpressionParser();
if ($pa_fields_type == FT_DATE || $pa_fields_type == FT_HISTORIC_DATE) {
$va_timestamps = $o_tep->parseDate($vm_value);
} else {
$va_timestamps = $o_tep->parseDatetime($vm_value);
}
if (!$va_timestamps) {
$this->postError(1805, $o_tep->getParseErrorMessage(), 'BaseModel->set()');
return false;
}
if ($pa_fields_type == FT_HISTORIC_DATETIME || $pa_fields_type == FT_HISTORIC_DATE) {
if ($vs_cur_value != $va_timestamps["start"]) {
$this->_FIELD_VALUES[$vs_field] = $va_timestamps["start"];
$this->_FIELD_VALUE_CHANGED[$vs_field] = true;
}
} else {
$va_timestamps = $o_tep->getUnixTimestamps();
if ($va_timestamps[0] == -1) {
$this->postError(1830, $o_tep->getParseErrorMessage(), 'BaseModel->set()');
return false;
}
if ($vs_cur_value != $va_timestamps["start"]) {
$this->_FIELD_VALUES[$vs_field] = $va_timestamps["start"];
$this->_FIELD_VALUE_CHANGED[$vs_field] = true;
}
}
}
}
break;
case FT_TIME:
if ($this->DIRECT_TIMES || $pa_options["SET_DIRECT_TIME"]) {
$this->_FIELD_VALUES[$vs_field] = $vm_value;
} else {
if (!$vm_value && $this->FIELDS[$vs_field]["IS_NULL"]) {
if ($vs_cur_value) {
$this->_FIELD_VALUE_CHANGED[$vs_field] = true;
}
$this->_FIELD_VALUES[$vs_field] = null;
} else {
$o_tep = new TimeExpressionParser();
if (!$o_tep->parseTime($vm_value)) {
$this->postError(1805, $o_tep->getParseErrorMessage(), 'BaseModel->set()');
return false;
}
$va_times = $o_tep->getTimes();
if ($vs_cur_value != $va_times['start']) {
$this->_FIELD_VALUES[$vs_field] = $va_times['start'];
$this->_FIELD_VALUE_CHANGED[$vs_field] = true;
}
示例15: execute
//.........这里部分代码省略.........
}
} else {
$this->postError(2900, _t("Invalid criteria type"), "BrowseEngine->execute()");
}
break;
# -----------------------------------------------------
}
}
$vs_filter_join_sql = $vs_filter_where_sql = '';
$va_wheres = array();
$va_joins = array();
$vs_sql_distinct = '';
if (sizeof($this->opa_result_filters)) {
$va_joins[$this->ops_browse_table_name] = "INNER JOIN " . $this->ops_browse_table_name . " ON " . $this->ops_browse_table_name . '.' . $t_item->primaryKey() . ' = ca_browses_acc.row_id';
$va_tmp = array();
foreach ($this->opa_result_filters as $va_filter) {
$vm_val = $this->_filterValueToQueryValue($va_filter);
$va_wheres[] = $this->ops_browse_table_name . '.' . $va_filter['field'] . " " . $va_filter['operator'] . " " . $vm_val;
}
}
if (isset($pa_options['checkAccess']) && is_array($pa_options['checkAccess']) && sizeof($pa_options['checkAccess']) && $t_item->hasField('access')) {
$va_joins[$this->ops_browse_table_name] = "INNER JOIN " . $this->ops_browse_table_name . " ON " . $this->ops_browse_table_name . '.' . $t_item->primaryKey() . ' = ca_browses_acc.row_id';
$va_wheres[] = "(" . $this->ops_browse_table_name . ".access IN (" . join(',', $pa_options['checkAccess']) . "))";
}
if ((!isset($pa_options['showDeleted']) || !$pa_options['showDeleted']) && $t_item->hasField('deleted')) {
if (!isset($va_joins[$this->ops_browse_table_name])) {
$va_joins[$this->ops_browse_table_name] = "INNER JOIN " . $this->ops_browse_table_name . " ON " . $this->ops_browse_table_name . '.' . $t_item->primaryKey() . ' = ca_browses_acc.row_id';
}
$va_wheres[] = "(" . $this->ops_browse_table_name . ".deleted = 0)";
}
if (isset($pa_options['limitToModifiedOn']) && $pa_options['limitToModifiedOn']) {
$o_tep = new TimeExpressionParser();
if ($o_tep->parse($pa_options['limitToModifiedOn'])) {
$va_range = $o_tep->getUnixTimestamps();
$va_joins['ca_change_log_subjects'] = "INNER JOIN ca_change_log_subjects ON ca_change_log_subjects.subject_row_id = ca_browses_acc.row_id AND ca_change_log_subjects.subject_table_num = " . $t_item->tableNum();
$va_joins['ca_change_log'] = "INNER JOIN ca_change_log ON ca_change_log.log_id = ca_change_log_subjects.log_id";
$va_wheres[] = "(((ca_change_log.log_datetime BETWEEN " . (int) $va_range['start'] . " AND " . (int) $va_range['end'] . ") AND (ca_change_log.changetype IN ('I', 'U', 'D'))))";
$vs_sql_distinct = 'DISTINCT';
// need to pull distinct rows since joining the change log can cause dupes
}
}
if (($va_browse_type_ids = $this->getTypeRestrictionList()) && sizeof($va_browse_type_ids)) {
$t_subject = $this->getSubjectInstance();
$va_joins[$this->ops_browse_table_name] = "INNER JOIN " . $this->ops_browse_table_name . " ON " . $this->ops_browse_table_name . '.' . $t_item->primaryKey() . ' = ca_browses_acc.row_id';
$va_wheres[] = '(' . $this->ops_browse_table_name . '.' . $t_subject->getTypeFieldName() . ' IN (' . join(', ', $va_browse_type_ids) . '))';
}
if (sizeof($va_wheres)) {
$vs_filter_where_sql = 'WHERE ' . join(' AND ', $va_wheres);
}
if (sizeof($va_joins)) {
$vs_filter_join_sql = join("\n", $va_joins);
}
$qr_res = $this->opo_db->query("\n\t\t\t\t\t\tSELECT {$vs_sql_distinct} row_id\n\t\t\t\t\t\tFROM ca_browses_acc\n\t\t\t\t\t\t{$vs_filter_join_sql}\n\t\t\t\t\t\t{$vs_filter_where_sql}\n\t\t\t\t\t");
while ($qr_res->nextRow()) {
$va_results[] = $qr_res->get('row_id', array('binary' => true));
}
$this->_dropTempTable('ca_browses_acc');
$this->_dropTempTable('ca_browses_tmp');
if ((!isset($pa_options['dontFilterByACL']) || !$pa_options['dontFilterByACL']) && $this->opo_config->get('perform_item_level_access_checking') && method_exists($t_item, "supportsACL") && $t_item->supportsACL()) {
$va_results = array_keys($this->filterHitsByACL(array_flip($va_results), $vn_user_id, __CA_ACL_READONLY_ACCESS__));
}
$this->opo_ca_browse_cache->setResults($va_results);
$vb_need_to_save_in_cache = true;
}
} else {
// no criteria - don't try to find anything unless configured to do so