本文整理汇总了PHP中ca_lists::getListID方法的典型用法代码示例。如果您正苦于以下问题:PHP ca_lists::getListID方法的具体用法?PHP ca_lists::getListID怎么用?PHP ca_lists::getListID使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ca_lists
的用法示例。
在下文中一共展示了ca_lists::getListID方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getRelatedItems
//.........这里部分代码省略.........
foreach ($va_get_where as $vs_fld => $vm_val) {
if ($t_rel_item->hasField($vs_fld)) {
$va_wheres[] = "({$vs_related_table_name}.{$vs_fld} = " . (!is_numeric($vm_val) ? "'" . $this->getDb()->escape($vm_val) . "'" : $vm_val) . ")";
}
}
}
if ($vs_idno_fld = $t_rel_item->getProperty('ID_NUMBERING_ID_FIELD')) {
$va_selects[] = "{$vs_related_table}.{$vs_idno_fld}";
}
if ($vs_idno_sort_fld = $t_rel_item->getProperty('ID_NUMBERING_SORT_FIELD')) {
$va_selects[] = "{$vs_related_table}.{$vs_idno_sort_fld}";
}
$va_selects[] = $va_path[1] . '.' . $vs_key;
if (isset($pa_options['fields']) && is_array($pa_options['fields'])) {
$va_selects = array_merge($va_selects, $pa_options['fields']);
}
if (isset($pa_options['checkAccess']) && is_array($pa_options['checkAccess']) && sizeof($pa_options['checkAccess']) && $t_rel_item->hasField('access')) {
$va_wheres[] = "({$vs_related_table}.access IN (" . join(',', $pa_options['checkAccess']) . "))";
}
if ((!isset($pa_options['showDeleted']) || !$pa_options['showDeleted']) && $t_rel_item->hasField('deleted')) {
$va_wheres[] = "({$vs_related_table}.deleted = 0)";
}
if (($va_criteria = isset($pa_options['criteria']) ? $pa_options['criteria'] : null) && is_array($va_criteria) && sizeof($va_criteria)) {
$va_wheres[] = "(" . join(" AND ", $va_criteria) . ")";
}
$va_wheres[] = "(" . $this->tableName() . '.' . $this->primaryKey() . " IN (" . join(",", $va_row_ids) . "))";
$va_selects[] = $t_rel_item->tableName() . ".*";
$vs_cur_table = array_shift($va_path);
$va_joins = array();
// Enforce restrict_to_lists for related list items
if ($vs_related_table_name == 'ca_list_items' && is_array($pa_options['restrictToLists'])) {
$va_list_ids = array();
foreach ($pa_options['restrictToLists'] as $vm_list) {
if ($vn_list_id = ca_lists::getListID($vm_list)) {
$va_list_ids[] = $vn_list_id;
}
}
if (sizeof($va_list_ids)) {
$va_wheres[] = "(ca_list_items.list_id IN (" . join(",", $va_list_ids) . "))";
}
}
foreach ($va_path as $vs_join_table) {
$va_rel_info = $this->getAppDatamodel()->getRelationships($vs_cur_table, $vs_join_table);
$va_joins[] = 'INNER JOIN ' . $vs_join_table . ' ON ' . $vs_cur_table . '.' . $va_rel_info[$vs_cur_table][$vs_join_table][0][0] . ' = ' . $vs_join_table . '.' . $va_rel_info[$vs_cur_table][$vs_join_table][0][1] . "\n";
$vs_cur_table = $vs_join_table;
}
// If we're getting ca_set_items, we have to rename the intrinsic row_id field because the pk is named row_id below. Hence, this hack.
if ($vs_related_table_name == 'ca_set_items') {
$va_selects[] = 'ca_set_items.row_id AS record_id';
}
$va_selects[] = $this->tableName() . '.' . $this->primaryKey() . ' AS row_id';
$vs_order_by = '';
if ($t_item_rel && $t_item_rel->hasField('rank')) {
$vs_order_by = ' ORDER BY ' . $t_item_rel->tableName() . '.rank';
} else {
if ($t_rel_item && ($vs_sort = $t_rel_item->getProperty('ID_NUMBERING_SORT_FIELD'))) {
$vs_order_by = " ORDER BY {$vs_related_table}.{$vs_sort}";
}
}
$vs_sql = "\n\t\t\tSELECT DISTINCT " . join(', ', $va_selects) . "\n\t\t\tFROM " . $this->tableName() . "\n\t\t\t" . join("\n", array_merge($va_joins, $va_joins_post_add)) . "\n\t\t\tWHERE\n\t\t\t\t" . join(' AND ', $va_wheres) . "\n\t\t\t{$vs_order_by}\n\t\t";
$qr_res = $o_db->query($vs_sql);
$va_rels = array();
$vn_c = 0;
if ($vn_start > 0) {
$qr_res->seek($vn_start);
}
示例2: getRelatedItems
//.........这里部分代码省略.........
if (!isset($va_rels[$vs_v][$vs_field]) || $vs_field == $vs_rel_pk) {
continue;
}
$va_rels[$vs_v]['intrinsic'][$vs_field] = $va_rels[$vs_v][$vs_field];
unset($va_rels[$vs_v][$vs_field]);
}
unset($va_rels[$vs_v]['_key']);
unset($va_rels[$vs_v]['row_id']);
}
}
if (!isset($pa_options['idsOnly']) || !$pa_options['idsOnly']) {
// Set 'label' entry - display label in current user's locale
foreach ($va_rels as $vs_v => $va_rel) {
$va_tmp = array(0 => $va_rel['labels']);
$va_tmp2 = caExtractValuesByUserLocale($va_tmp);
$va_rels[$vs_v]['label'] = array_shift($va_tmp2);
}
}
}
//
// END - from self relation itself
//
} else {
//
// BEGIN - non-self relation
//
$va_wheres[] = "(" . $this->tableName() . '.' . $this->primaryKey() . " IN (" . join(",", $va_row_ids) . "))";
$vs_cur_table = array_shift($va_path);
$va_joins = array();
// Enforce restrict_to_lists for related list items
if ($vs_related_table_name == 'ca_list_items' && is_array($pa_options['restrictToLists'])) {
$va_list_ids = array();
foreach ($pa_options['restrictToLists'] as $vm_list) {
if ($vn_list_id = ca_lists::getListID($vm_list)) {
$va_list_ids[] = $vn_list_id;
}
}
if (sizeof($va_list_ids)) {
$va_wheres[] = "(ca_list_items.list_id IN (" . join(",", $va_list_ids) . "))";
}
}
if ($vb_is_combo_key_relation) {
$va_joins = array("INNER JOIN {$vs_related_table_name} ON {$vs_related_table_name}.row_id = " . $this->primaryKey(true) . " AND {$vs_related_table_name}.table_num = " . $this->tableNum());
} else {
foreach ($va_path as $vs_join_table) {
$va_rel_info = $this->getAppDatamodel()->getRelationships($vs_cur_table, $vs_join_table);
$vs_join = 'INNER JOIN ' . $vs_join_table . ' ON ';
$va_tmp = array();
foreach ($va_rel_info[$vs_cur_table][$vs_join_table] as $vn_i => $va_rel) {
$va_tmp[] = $vs_cur_table . "." . $va_rel_info[$vs_cur_table][$vs_join_table][$vn_i][0] . ' = ' . $vs_join_table . '.' . $va_rel_info[$vs_cur_table][$vs_join_table][$vn_i][1] . "\n";
}
$va_joins[] = $vs_join . join(' OR ', $va_tmp);
$vs_cur_table = $vs_join_table;
}
}
// If we're getting ca_set_items, we have to rename the intrinsic row_id field because the pk is named row_id below. Hence, this hack.
if ($vs_related_table_name == 'ca_set_items') {
$va_selects[] = 'ca_set_items.row_id AS record_id';
}
$va_selects[] = $this->tableName() . '.' . $this->primaryKey() . ' AS row_id';
$vs_order_by = '';
if ($t_item_rel && $t_item_rel->hasField('rank')) {
$vs_order_by = ' ORDER BY ' . $t_item_rel->tableName() . '.rank';
$va_selects[] = $t_item_rel->tableName() . '.rank';
} else {
if ($t_rel_item && ($vs_sort = $t_rel_item->getProperty('ID_NUMBERING_SORT_FIELD'))) {
示例3: getListItemID
/**
* Returns or Creates a list item or list item id matching the parameters and options provided
* @param string/int $pm_list_code_or_id
* @param string $ps_item_idno
* @param string/int $pn_type_id
* @param int $pn_locale_id
* @param null/array $pa_values
* @param array $pa_options An optional array of options. See DataMigrationUtils::_getID() for a list.
* @return bool|ca_list_items|mixed|null
*
* @see DataMigrationUtils::_getID()
*/
static function getListItemID($pm_list_code_or_id, $ps_item_idno, $pn_type_id, $pn_locale_id, $pa_values = null, $pa_options = null)
{
if (!is_array($pa_options)) {
$pa_options = array();
}
$pb_output_errors = caGetOption('outputErrors', $pa_options, false);
$pa_match_on = caGetOption('matchOn', $pa_options, array('label', 'idno'), array('castTo' => "array"));
$vn_parent_id = caGetOption('parent_id', $pa_values, false);
$vs_singular_label = isset($pa_values['preferred_labels']['name_singular']) && $pa_values['preferred_labels']['name_singular'] ? $pa_values['preferred_labels']['name_singular'] : '';
if (!$vs_singular_label) {
$vs_singular_label = isset($pa_values['name_singular']) && $pa_values['name_singular'] ? $pa_values['name_singular'] : str_replace("_", " ", $ps_item_idno);
}
$vs_plural_label = isset($pa_values['preferred_labels']['name_plural']) && $pa_values['preferred_labels']['name_plural'] ? $pa_values['preferred_labels']['name_plural'] : '';
if (!$vs_plural_label) {
$vs_plural_label = isset($pa_values['name_plural']) && $pa_values['name_plural'] ? $pa_values['name_plural'] : str_replace("_", " ", $ps_item_idno);
}
if (!$vs_singular_label) {
$vs_singular_label = $vs_plural_label;
}
if (!$vs_plural_label) {
$vs_plural_label = $vs_singular_label;
}
if (!$ps_item_idno) {
$ps_item_idno = $vs_plural_label;
}
if (!isset($pa_options['cache'])) {
$pa_options['cache'] = true;
}
// Create cache key
$vs_cache_key = md5($pm_list_code_or_id . '/' . $ps_item_idno . '/' . $vn_parent_id . '/' . $vs_singular_label . '/' . $vs_plural_label . '/' . json_encode($pa_match_on));
$o_event = isset($pa_options['importEvent']) && $pa_options['importEvent'] instanceof ca_data_import_events ? $pa_options['importEvent'] : null;
$ps_event_source = isset($pa_options['importEventSource']) && $pa_options['importEventSource'] ? $pa_options['importEventSource'] : "?";
/** @var KLogger $o_log */
$o_log = isset($pa_options['log']) && $pa_options['log'] instanceof KLogger ? $pa_options['log'] : null;
if ($pa_options['cache'] && isset(DataMigrationUtils::$s_cached_list_item_ids[$vs_cache_key])) {
if (isset($pa_options['returnInstance']) && $pa_options['returnInstance']) {
$t_item = new ca_list_items(DataMigrationUtils::$s_cached_list_item_ids[$vs_cache_key]);
if (isset($pa_options['transaction']) && $pa_options['transaction'] instanceof Transaction) {
$t_item->setTransaction($pa_options['transaction']);
}
return $t_item;
}
if ($o_event) {
$o_event->beginItem($ps_event_source, 'ca_list_items', 'U');
$o_event->endItem(DataMigrationUtils::$s_cached_list_item_ids[$vs_cache_key], __CA_DATA_IMPORT_ITEM_SUCCESS__, '');
}
if ($o_log) {
$o_log->logDebug(_t("Found existing list item %1 (member of list %2) in DataMigrationUtils::getListItemID() using idno", $ps_item_idno, $pm_list_code_or_id));
}
return DataMigrationUtils::$s_cached_list_item_ids[$vs_cache_key];
}
if (!($vn_list_id = ca_lists::getListID($pm_list_code_or_id))) {
if ($pb_output_errors) {
print "[Error] " . _t("Could not find list with list code %1", $pm_list_code_or_id) . "\n";
}
if ($o_log) {
$o_log->logError(_t("Could not find list with list code %1", $pm_list_code_or_id));
}
return DataMigrationUtils::$s_cached_list_item_ids[$vs_cache_key] = null;
}
if (!$vn_parent_id && $vn_parent_id !== false) {
$vn_parent_id = caGetListRootID($pm_list_code_or_id);
}
$t_list = new ca_lists();
$t_item = new ca_list_items();
if (isset($pa_options['transaction']) && $pa_options['transaction'] instanceof Transaction) {
$t_list->setTransaction($pa_options['transaction']);
$t_item->setTransaction($pa_options['transaction']);
if ($o_event) {
$o_event->setTransaction($pa_options['transaction']);
}
}
$vn_item_id = null;
foreach ($pa_match_on as $vs_match_on) {
switch (strtolower($vs_match_on)) {
case 'label':
case 'labels':
if (trim($vs_singular_label) || trim($vs_plural_label)) {
$va_criteria = array('preferred_labels' => array('name_singular' => $vs_singular_label), 'list_id' => $vn_list_id);
if ($vn_parent_id !== false) {
$va_criteria['parent_id'] = $vn_parent_id;
}
if ($vn_item_id = ca_list_items::find($va_criteria, array('returnAs' => 'firstId', 'purifyWithFallback' => true, 'transaction' => $pa_options['transaction']))) {
if ($o_log) {
$o_log->logDebug(_t("Found existing list item %1 (member of list %2) in DataMigrationUtils::getListItemID() using singular label %3", $ps_item_idno, $pm_list_code_or_id, $vs_singular_label));
}
break 2;
} else {
//.........这里部分代码省略.........
示例4: getFacetContent
//.........这里部分代码省略.........
$va_joins = array();
$va_selects = array();
$va_wheres = array();
$va_orderbys = array();
if (!$va_facet_info['show_all_when_first_facet'] || $this->numCriteria() > 0) {
$vs_cur_table = array_shift($va_path);
foreach ($va_path as $vs_join_table) {
$va_rel_info = $this->opo_datamodel->getRelationships($vs_cur_table, $vs_join_table);
$va_joins[] = 'INNER JOIN ' . $vs_join_table . ' ON ' . $vs_cur_table . '.' . $va_rel_info[$vs_cur_table][$vs_join_table][0][0] . ' = ' . $vs_join_table . '.' . $va_rel_info[$vs_cur_table][$vs_join_table][0][1] . "\n";
$vs_cur_table = $vs_join_table;
}
} else {
if ($va_facet_info['show_all_when_first_facet']) {
$va_path = array_reverse($va_path);
// in "show_all" mode we turn the browse on it's head and grab records by the "subject" table, rather than the browse table
$vs_cur_table = array_shift($va_path);
$vs_join_table = $va_path[0];
$va_rel_info = $this->opo_datamodel->getRelationships($vs_cur_table, $vs_join_table);
$va_joins[] = 'LEFT JOIN ' . $vs_join_table . ' ON ' . $vs_cur_table . '.' . $va_rel_info[$vs_cur_table][$vs_join_table][0][0] . ' = ' . $vs_join_table . '.' . $va_rel_info[$vs_cur_table][$vs_join_table][0][1] . "\n";
}
}
if (sizeof($va_results) && $this->numCriteria() > 0) {
$va_wheres[] = "(" . $t_subject->tableName() . '.' . $t_subject->primaryKey() . " IN (" . join(',', $va_results) . "))";
}
if (!is_array($va_restrict_to_lists = $va_facet_info['restrict_to_lists'])) {
$va_restrict_to_lists = array();
}
if (is_array($va_restrict_to_lists) && sizeof($va_restrict_to_lists) > 0 && $t_rel_item->tableName() == 'ca_list_items') {
$va_list_ids = array();
foreach ($va_restrict_to_lists as $vm_list) {
if (is_numeric($vm_list)) {
$vn_list_id = (int) $vm_list;
} else {
$vn_list_id = (int) ca_lists::getListID($vm_list);
}
if ($vn_list_id) {
$va_list_ids[] = $vn_list_id;
}
}
if (sizeof($va_list_ids) > 0) {
$va_wheres[] = "{$vs_rel_table_name}.list_id IN (" . join(',', $va_list_ids) . ")";
}
}
if (is_array($va_restrict_to_types) && sizeof($va_restrict_to_types) > 0 && method_exists($t_rel_item, "getTypeList")) {
$va_wheres[] = "{$vs_rel_table_name}.type_id IN (" . join(',', caGetOption('dont_include_subtypes', $va_facet_info, false) ? $va_restrict_to_types : $va_restrict_to_types_expanded) . ")" . ($t_rel_item->getFieldInfo('type_id', 'IS_NULL') ? " OR ({$vs_rel_table_name}.type_id IS NULL)" : '');
$va_selects[] = "{$vs_rel_table_name}.type_id";
}
if (is_array($va_exclude_types) && sizeof($va_exclude_types) > 0 && method_exists($t_rel_item, "getTypeList")) {
$va_wheres[] = "{$vs_rel_table_name}.type_id NOT IN (" . join(',', caGetOption('dont_include_subtypes', $va_facet_info, false) ? $va_exclude_types : $va_exclude_types_expanded) . ")";
}
if (isset($pa_options['checkAccess']) && is_array($pa_options['checkAccess']) && sizeof($pa_options['checkAccess']) && $t_rel_item->hasField('access')) {
$va_wheres[] = "(" . $t_rel_item->tableName() . ".access IN (" . join(',', $pa_options['checkAccess']) . "))";
// exclude non-accessible authority items
if (!$va_facet_info['show_all_when_first_facet'] || $this->numCriteria() > 0) {
$va_wheres[] = "(" . $vs_browse_table_name . ".access IN (" . join(',', $pa_options['checkAccess']) . "))";
// exclude non-accessible browse items
}
}
if ($t_item->hasField('deleted') && !$va_facet_info['show_all_when_first_facet']) {
$va_wheres[] = "(" . $t_item->tableName() . ".deleted = 0)";
}
if ($t_rel_item->hasField('deleted')) {
$va_wheres[] = "(" . $t_rel_item->tableName() . ".deleted = 0)";
}
$vs_rel_pk = $t_rel_item->primaryKey();
$va_rel_attr_elements = $t_rel_item->getApplicableElementCodes(null, true, false);
示例5: getItemID
/**
*
* transaction = transaction to perform database operations within. [Default is null]
*/
public static function getItemID($pm_list_name_or_id, $ps_idno, $pa_options = null)
{
if ((!isset($pa_options['noCache']) || !isset($pa_options['noCache'])) && isset(ca_lists::$s_item_id_cache[$pm_list_name_or_id][$ps_idno])) {
return ca_lists::$s_item_id_cache[$pm_list_name_or_id][$ps_idno];
}
if ($o_trans = caGetOption('transaction', $pa_options, null)) {
$o_db = $o_trans->getDb();
} else {
$o_db = new Db();
}
$vn_item_id = null;
if ($vn_list_id = ca_lists::getListID($pm_list_name_or_id)) {
$qr_res = $o_db->query("SELECT item_id FROM ca_list_items WHERE deleted = 0 AND list_id = ? AND idno = ?", (int) $vn_list_id, (string) $ps_idno);
if ($qr_res->nextRow()) {
$vn_item_id = (int) $qr_res->get('item_id');
}
ca_lists::$s_item_id_cache[$vn_list_id][$ps_idno] = $vn_item_id;
}
ca_lists::$s_item_id_cache[$pm_list_name_or_id][$ps_idno] = $vn_item_id;
return $vn_item_id;
}
示例6: getListItemID
/**
*
* @param array $pa_options An optional array of options, which include:
* outputErrors - if true, errors will be printed to console [default=false]
* dontCreate - if true then new items will not be created [default=false]
* matchOnLabel = if true then list items are looked up exclusively using labels [default=false]
* matchOnIdno - try to match on idno if name match fails [default=false]
* cache = cache item_ids of previously created/loaded items [default=true]
* returnInstance = return ca_occurrences instance rather than occurrence_id. Default is false.
* importEvent = if ca_data_import_events instance is passed then the insert/update of the list item will be logged as part of the import
* importEventSource = if importEvent is passed, then the value set for importEventSource is used in the import event log as the data source. If omitted a default value of "?" is used
* log = if KLogger instance is passed then actions will be logged
*/
static function getListItemID($pm_list_code_or_id, $ps_item_idno, $pn_type_id, $pn_locale_id, $pa_values = null, $pa_options = null)
{
if (!is_array($pa_options)) {
$pa_options = array();
}
if (!isset($pa_options['outputErrors'])) {
$pa_options['outputErrors'] = false;
}
$pb_match_on_label = caGetOption('matchOnLabel', $pa_options, false);
$pb_match_on_idno = caGetOption('matchOnIdno', $pa_options, false);
$vn_parent_id = caGetOption('parent_id', $pa_values, null);
if (!isset($pa_options['cache'])) {
$pa_options['cache'] = true;
}
$o_event = isset($pa_options['importEvent']) && $pa_options['importEvent'] instanceof ca_data_import_events ? $pa_options['importEvent'] : null;
$vs_event_source = isset($pa_options['importEventSource']) && $pa_options['importEventSource'] ? $pa_options['importEventSource'] : "?";
$o_log = isset($pa_options['log']) && $pa_options['log'] instanceof KLogger ? $pa_options['log'] : null;
if ($pa_options['cache'] && isset(DataMigrationUtils::$s_cached_list_item_ids[$pm_list_code_or_id . '/' . $ps_item_idno . '/' . $vn_parent_id])) {
if (isset($pa_options['returnInstance']) && $pa_options['returnInstance']) {
return new ca_list_items(DataMigrationUtils::$s_cached_list_item_ids[$pm_list_code_or_id . '/' . $ps_item_idno . '/' . $vn_parent_id]);
}
if ($o_event) {
$o_event->beginItem($vs_event_source, 'ca_list_items', 'U');
$o_event->endItem(DataMigrationUtils::$s_cached_list_item_ids[$pm_list_code_or_id . '/' . $ps_item_idno . '/' . $vn_parent_id], __CA_DATA_IMPORT_ITEM_SUCCESS__, '');
}
if ($o_log) {
$o_log->logDebug(_t("Found existing list item %1 (member of list %2) in DataMigrationUtils::getListItemID() using idno", $ps_item_idno, $pm_list_code_or_id));
}
return DataMigrationUtils::$s_cached_list_item_ids[$pm_list_code_or_id . '/' . $ps_item_idno . '/' . $vn_parent_id];
}
if (!($vn_list_id = ca_lists::getListID($pm_list_code_or_id))) {
if (isset($pa_options['outputErrors']) && $pa_options['outputErrors']) {
print "[Error] " . _t("Could not find list with list code %1", $pm_list_code_or_id) . "\n";
}
if ($o_log) {
$o_log->logError(_t("Could not find list with list code %1", $pm_list_code_or_id));
}
return DataMigrationUtils::$s_cached_list_item_ids[$pm_list_code_or_id . '/' . $ps_item_idno . '/' . $vn_parent_id] = null;
}
$t_list = new ca_lists();
$t_item = new ca_list_items();
if (isset($pa_options['transaction']) && $pa_options['transaction'] instanceof Transaction) {
$t_list->setTransaction($pa_options['transaction']);
$t_item->setTransaction($pa_options['transaction']);
}
$va_find_arr = array('list_id' => $vn_list_id);
if ($vn_parent_id) {
$va_find_arr['parent_id'] = $vn_parent_id;
}
$vn_item_id = null;
if ($pb_match_on_label) {
if (!($vn_item_id = ca_list_items::find(array_merge(array('preferred_labels' => array('name_singular' => $ps_item_idno)), $va_find_arr), array('returnAs' => 'firstId', 'transaction' => $pa_options['transaction'])))) {
$vn_item_id = ca_list_items::find(array_merge(array('preferred_labels' => array('name_plural' => $ps_item_idno)), $va_find_arr), array('returnAs' => 'firstId', 'transaction' => $pa_options['transaction']));
}
if ($vn_item_id) {
DataMigrationUtils::$s_cached_list_item_ids[$pm_list_code_or_id . '/' . $ps_item_idno . '/' . $vn_parent_id] = $vn_item_id;
if ($o_event) {
$o_event->beginItem($vs_event_source, 'ca_list_items', 'U');
$o_event->endItem($vn_item_id, __CA_DATA_IMPORT_ITEM_SUCCESS__, '');
}
if (isset($pa_options['returnInstance']) && $pa_options['returnInstance']) {
return new ca_list_items($vn_item_id);
}
if ($o_log) {
$o_log->logDebug(_t("Found existing list item %1 (member of list %2) in DataMigrationUtils::getListItemID() using label %3 and %4", $ps_item_idno, $pm_list_code_or_id, $vs_label, print_R($va_find_arr, true)));
}
return DataMigrationUtils::$s_cached_list_item_ids[$pm_list_code_or_id . '/' . $ps_item_idno . '/' . $vn_parent_id];
}
}
if (!$pb_match_on_label || $pb_match_on_idno) {
if ($vn_item_id = ca_list_items::find(array_merge(array('idno' => $vs_idno), $va_find_arr), array('returnAs' => 'firstId', 'transaction' => $pa_options['transaction']))) {
DataMigrationUtils::$s_cached_list_item_ids[$pm_list_code_or_id . '/' . $ps_item_idno . '/' . $vn_parent_id] = $vn_item_id;
if ($o_event) {
$o_event->beginItem($vs_event_source, 'ca_list_items', 'U');
$o_event->endItem(DataMigrationUtils::$s_cached_list_item_ids[$pm_list_code_or_id . '/' . $ps_item_idno . '/' . $vn_parent_id], __CA_DATA_IMPORT_ITEM_SUCCESS__, '');
}
if ($o_log) {
$o_log->logDebug(_t("Found existing list item %1 (member of list %2) in DataMigrationUtils::getListItemID() using idno with %3", $ps_item_idno, $pm_list_code_or_id, print_R($va_find_arr, true)));
}
if (isset($pa_options['returnInstance']) && $pa_options['returnInstance']) {
return $t_item;
}
return DataMigrationUtils::$s_cached_list_item_ids[$pm_list_code_or_id . '/' . $ps_item_idno . '/' . $vn_parent_id];
}
}
if (isset($pa_options['dontCreate']) && $pa_options['dontCreate']) {
return false;
//.........这里部分代码省略.........
示例7: getListItemID
/**
* Returns or Creates a list item or list item id matching the parameters and options provided
* @param string/int $pm_list_code_or_id
* @param string $ps_item_idno
* @param string/int $pn_type_id
* @param int $pn_locale_id
* @param null/array $pa_values
* @param array $pa_options An optional array of options, which include:
* outputErrors - if true, errors will be printed to console [default=false]
* dontCreate - if true then new list items will not be created [default=false]
* matchOn = optional list indicating sequence of checks for an existing record; values of array can be "label" and "idno". Ex. array("idno", "label") will first try to match on idno and then label if the first match fails.
* cache = cache item_ids of previously created/loaded items [default=true]
* returnInstance = return ca_occurrences instance rather than occurrence_id. Default is false.
* importEvent = if ca_data_import_events instance is passed then the insert/update of the list item will be logged as part of the import
* importEventSource = if importEvent is passed, then the value set for importEventSource is used in the import event log as the data source. If omitted a default value of "?" is used
* nonPreferredLabels = an optional array of nonpreferred labels to add to any newly created list items. Each label in the array is an array with required list item label values.
* log = if KLogger instance is passed then actions will be logged
* @return bool|\ca_list_items|mixed|null
*/
static function getListItemID($pm_list_code_or_id, $ps_item_idno, $pn_type_id, $pn_locale_id, $pa_values = null, $pa_options = null)
{
if (!is_array($pa_options)) {
$pa_options = array();
}
if (!isset($pa_options['outputErrors'])) {
$pa_options['outputErrors'] = false;
}
$pa_match_on = caGetOption('matchOn', $pa_options, array('label', 'idno'), array('castTo' => "array"));
$vn_parent_id = caGetOption('parent_id', $pa_values, null);
$vs_singular_label = isset($pa_values['preferred_labels']['name_singular']) && $pa_values['preferred_labels']['name_singular'] ? $pa_values['preferred_labels']['name_singular'] : '';
if (!$vs_singular_label) {
$vs_singular_label = isset($pa_values['name_singular']) && $pa_values['name_singular'] ? $pa_values['name_singular'] : str_replace("_", " ", $ps_item_idno);
}
$vs_plural_label = isset($pa_values['preferred_labels']['name_plural']) && $pa_values['preferred_labels']['name_plural'] ? $pa_values['preferred_labels']['name_plural'] : '';
if (!$vs_plural_label) {
$vs_plural_label = isset($pa_values['name_plural']) && $pa_values['name_plural'] ? $pa_values['name_plural'] : str_replace("_", " ", $ps_item_idno);
}
if (!$vs_singular_label) {
$vs_singular_label = $vs_plural_label;
}
if (!$vs_plural_label) {
$vs_plural_label = $vs_singular_label;
}
if (!$ps_item_idno) {
$ps_item_idno = $vs_plural_label;
}
if (!isset($pa_options['cache'])) {
$pa_options['cache'] = true;
}
// Create a cache key and compress it to save memory
$vs_cache_key = md5($pm_list_code_or_id . '/' . $ps_item_idno . '/' . $vn_parent_id . '/' . $vs_singular_label . '/' . $vs_plural_label . '/' . json_encode($pa_match_on));
$o_event = isset($pa_options['importEvent']) && $pa_options['importEvent'] instanceof ca_data_import_events ? $pa_options['importEvent'] : null;
$vs_event_source = isset($pa_options['importEventSource']) && $pa_options['importEventSource'] ? $pa_options['importEventSource'] : "?";
/** @var KLogger $o_log */
$o_log = isset($pa_options['log']) && $pa_options['log'] instanceof KLogger ? $pa_options['log'] : null;
if ($pa_options['cache'] && isset(DataMigrationUtils::$s_cached_list_item_ids[$vs_cache_key])) {
if (isset($pa_options['returnInstance']) && $pa_options['returnInstance']) {
$t_item = new ca_list_items(DataMigrationUtils::$s_cached_list_item_ids[$vs_cache_key]);
if (isset($pa_options['transaction']) && $pa_options['transaction'] instanceof Transaction) {
$t_item->setTransaction($pa_options['transaction']);
}
return $t_item;
}
if ($o_event) {
$o_event->beginItem($vs_event_source, 'ca_list_items', 'U');
$o_event->endItem(DataMigrationUtils::$s_cached_list_item_ids[$vs_cache_key], __CA_DATA_IMPORT_ITEM_SUCCESS__, '');
}
if ($o_log) {
$o_log->logDebug(_t("Found existing list item %1 (member of list %2) in DataMigrationUtils::getListItemID() using idno", $ps_item_idno, $pm_list_code_or_id));
}
return DataMigrationUtils::$s_cached_list_item_ids[$vs_cache_key];
}
if (!($vn_list_id = ca_lists::getListID($pm_list_code_or_id))) {
if (isset($pa_options['outputErrors']) && $pa_options['outputErrors']) {
print "[Error] " . _t("Could not find list with list code %1", $pm_list_code_or_id) . "\n";
}
if ($o_log) {
$o_log->logError(_t("Could not find list with list code %1", $pm_list_code_or_id));
}
return DataMigrationUtils::$s_cached_list_item_ids[$vs_cache_key] = null;
}
if (!$vn_parent_id) {
$vn_parent_id = caGetListRootID($pm_list_code_or_id);
}
$t_list = new ca_lists();
$t_item = new ca_list_items();
if (isset($pa_options['transaction']) && $pa_options['transaction'] instanceof Transaction) {
$t_list->setTransaction($pa_options['transaction']);
$t_item->setTransaction($pa_options['transaction']);
if ($o_event) {
$o_event->setTransaction($pa_options['transaction']);
}
}
$vn_item_id = null;
foreach ($pa_match_on as $vs_match_on) {
switch (strtolower($vs_match_on)) {
case 'label':
case 'labels':
if (trim($vs_singular_label) || trim($vs_plural_label)) {
if ($vn_item_id = ca_list_items::find(array('preferred_labels' => array('name_singular' => $vs_singular_label), 'parent_id' => $vn_parent_id, 'list_id' => $vn_list_id), array('returnAs' => 'firstId', 'transaction' => $pa_options['transaction']))) {
//.........这里部分代码省略.........
示例8: getFacetContent
//.........这里部分代码省略.........
$va_joins = array();
$va_selects = array();
$va_wheres = array();
$va_orderbys = array();
if (!$va_facet_info['show_all_when_first_facet'] || $this->numCriteria() > 0) {
$vs_cur_table = array_shift($va_path);
foreach ($va_path as $vs_join_table) {
$va_rel_info = $this->opo_datamodel->getRelationships($vs_cur_table, $vs_join_table);
$va_joins[] = 'INNER JOIN ' . $vs_join_table . ' ON ' . $vs_cur_table . '.' . $va_rel_info[$vs_cur_table][$vs_join_table][0][0] . ' = ' . $vs_join_table . '.' . $va_rel_info[$vs_cur_table][$vs_join_table][0][1] . "\n";
$vs_cur_table = $vs_join_table;
}
} else {
if ($va_facet_info['show_all_when_first_facet']) {
$va_path = array_reverse($va_path);
// in "show_all" mode we turn the browse on it's head and grab records by the "subject" table, rather than the browse table
$vs_cur_table = array_shift($va_path);
$vs_join_table = $va_path[0];
$va_rel_info = $this->opo_datamodel->getRelationships($vs_cur_table, $vs_join_table);
$va_joins[] = 'LEFT JOIN ' . $vs_join_table . ' ON ' . $vs_cur_table . '.' . $va_rel_info[$vs_cur_table][$vs_join_table][0][0] . ' = ' . $vs_join_table . '.' . $va_rel_info[$vs_cur_table][$vs_join_table][0][1] . "\n";
}
}
if (sizeof($va_results) && $this->numCriteria() > 0) {
$va_wheres[] = "(" . $t_subject->tableName() . '.' . $t_subject->primaryKey() . " IN (" . join(',', $va_results) . "))";
}
if (!is_array($va_restrict_to_lists = $va_facet_info['restrict_to_lists'])) {
$va_restrict_to_lists = array();
}
if (is_array($va_restrict_to_lists) && sizeof($va_restrict_to_lists) > 0 && $t_rel_item->tableName() == 'ca_list_items') {
$va_list_ids = array();
foreach ($va_restrict_to_lists as $vm_list) {
if (is_numeric($vm_list)) {
$vn_list_id = (int) $vm_list;
} else {
$vn_list_id = (int) ca_lists::getListID($vm_list);
}
if ($vn_list_id) {
$va_list_ids[] = $vn_list_id;
}
}
if (sizeof($va_list_ids) > 0) {
$va_wheres[] = "{$vs_rel_table_name}.list_id IN (" . join(',', $va_list_ids) . ")";
}
}
if (is_array($va_restrict_to_types) && sizeof($va_restrict_to_types) > 0 && method_exists($t_rel_item, "getTypeList")) {
$va_wheres[] = "{$vs_rel_table_name}.type_id IN (" . join(',', $va_restrict_to_types_expanded) . ")";
$va_selects[] = "{$vs_rel_table_name}.type_id";
}
if (is_array($va_exclude_types) && sizeof($va_exclude_types) > 0 && method_exists($t_rel_item, "getTypeList")) {
$va_wheres[] = "{$vs_rel_table_name}.type_id NOT IN (" . join(',', $va_exclude_types_expanded) . ")";
}
if (sizeof($va_restrict_to_relationship_types) > 0 && is_object($t_item_rel)) {
$va_wheres[] = $t_item_rel->tableName() . ".type_id IN (" . join(',', $va_restrict_to_relationship_types) . ")";
}
if (sizeof($va_exclude_relationship_types) > 0 && is_object($t_item_rel)) {
$va_wheres[] = $t_item_rel->tableName() . ".type_id NOT IN (" . join(',', $va_exclude_relationship_types) . ")";
}
if (isset($pa_options['checkAccess']) && is_array($pa_options['checkAccess']) && sizeof($pa_options['checkAccess']) && $t_rel_item->hasField('access')) {
$va_wheres[] = "(" . $t_rel_item->tableName() . ".access IN (" . join(',', $pa_options['checkAccess']) . "))";
// exclude non-accessible authority items
if (!$va_facet_info['show_all_when_first_facet'] || $this->numCriteria() > 0) {
$va_wheres[] = "(" . $vs_browse_table_name . ".access IN (" . join(',', $pa_options['checkAccess']) . "))";
// exclude non-accessible browse items
}
}
if ($vs_browse_type_limit_sql) {
$va_wheres[] = $vs_browse_type_limit_sql;