本文整理汇总了PHP中ca_lists::get方法的典型用法代码示例。如果您正苦于以下问题:PHP ca_lists::get方法的具体用法?PHP ca_lists::get怎么用?PHP ca_lists::get使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ca_lists
的用法示例。
在下文中一共展示了ca_lists::get方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: caGetListCode
function caGetListCode($pn_list_id, $pa_options = null)
{
global $g_ca_get_list_code_cache;
if (isset($g_ca_get_list_code_cache[$pn_list_id])) {
return $g_ca_get_list_code_cache[$pn_list_id];
}
$t_list = new ca_lists();
if ($o_trans = caGetOption('transaction', $pa_options, null)) {
$t_list->setTransaction($o_trans);
}
$t_list->load($pn_list_id);
return $g_ca_get_list_code_cache[$pn_list_id] = $t_list->get('list_code');
}
示例2: getValuesForExport
/**
* Override standard implementation to insert list_code for current list_id into returned data. The list_code is required for consumers of export data
* when dealing with lists.
*
* @param array $pa_options Array of options for BaseModel::getValuesForExport(). No additional options are defined by this subclass.
* @return array Array of data as returned by BaseModel::getValuesForExport() except for added list_code value
*/
public function getValuesForExport($pa_options = null)
{
$va_data = parent::getValuesForExport($pa_options);
$t_list = new ca_lists($this->get('list_id'));
$va_data['list_code'] = $t_list->get('list_code');
return $va_data;
}
示例3: getListAsHTMLFormElement
/**
* Returns HTML <select> element containing the specified list, or portion of the list.
*
* @param mixed $pm_list_name_or_id
* @param string $ps_name
* @param array $pa_attributes
* @param array $pa_options Array of options. Valid options include:
* childrenOnlyForItemID = if set only items below item_id in the list item hierarchy are returned. Default (null) is to return all items in the list.
* directChildrenOnly = if set only items with item_id=childrenOnlyForItemID as parent in the list item hierarchy are returned. Default (null) is to return all items in the list.
* nullOption = if set then a "null" (no value) option is available labeled with the value passed in this option
* additionalOptions = an optional array of options that will be passed through to caHTMLSelect; keys are display labels and values are used as option values
* value = if set, the <select> will have default selection set to the item whose *value* matches the option value. If none is set then the first item in the list will be selected
* key = ca_list_item field to be used as value for the <select> element list; can be set to either item_id or item_value; default is item_id
* width = the display width of the list in characters or pixels
* limitToItemsWithID = An optional array of list item_ids. Item_ids not in the array will be omitted from the returned list.
* omitItemsWithID = An optional array of list item_ids. Item_ids in the array will be omitted from the returned list.
* disableItemsWithID = An optional array of list item_ids. Item_ids in the array will be disabled in the returned list.
*
* limitToItemsRelatedToCollections = an array of collection_ids or collection idno's; returned items will be restricted to those attached to the specified collections
* limitToItemsRelatedToCollectionWithRelationshipTypes = array of collection type names or type_ids; returned items will be restricted to those attached to the specified collectionss with the specified relationship type
* limitToListIDs = array of list_ids to restrict returned items to when using "limitToItemsRelatedToCollections"
*
* indentForHierarchy = indicate hierarchy with indentation. [Default is true]
* transaction = transaction to perform database operations within. [Default is null]
*
* @return string - HTML code for the <select> element; empty string if the list is empty
*/
public static function getListAsHTMLFormElement($pm_list_name_or_id, $ps_name, $pa_attributes = null, $pa_options = null)
{
$t_list = new ca_lists();
if ($o_trans = caGetOption('transaction', $pa_options, null)) {
$t_list->setTransaction($o_trans);
}
if (!is_array($pa_options)) {
$pa_options = array();
}
if (!(isset($pa_options['limitToItemsRelatedToCollection']) && is_array($pa_options['limitToItemsRelatedToCollections']))) {
$vn_list_id = $t_list->_getListID($pm_list_name_or_id);
$t_list->load($vn_list_id);
}
$vn_root_id = isset($pa_options['childrenOnlyForItemID']) && $pa_options['childrenOnlyForItemID'] ? $pa_options['childrenOnlyForItemID'] : null;
$va_disabled_item_ids = caGetOption('disableItemsWithID', $pa_options, null);
$vs_render_as = isset($pa_options['render']) ? $pa_options['render'] : '';
$vn_sort_type = $t_list->get('default_sort');
if ($vs_render_as == 'yes_no_checkboxes' && $vn_sort_type == __CA_LISTS_SORT_BY_LABEL__) {
$vn_sort_type = __CA_LISTS_SORT_BY_IDENTIFIER__;
// never allow sort-by-label when rendering as yes/no checkbox
}
if (!in_array($vs_render_as, array('lookup', 'horiz_hierbrowser', 'vert_hierbrowser'))) {
if (isset($pa_options['limitToItemsRelatedToCollections']) && is_array($pa_options['limitToItemsRelatedToCollections'])) {
$t_collection = new ca_collections();
$va_collection_ids = array();
foreach ($pa_options['limitToItemsRelatedToCollections'] as $vn_collection_id) {
if ($vn_collection_id && !is_numeric($vn_collection_id)) {
if ($vn_collection_id = $t_collection->load(array('idno' => $vn_collection_id))) {
$va_collection_ids[] = $vn_collection_id;
}
} else {
if ($vn_collection_id) {
$va_collection_ids[] = $vn_collection_id;
}
}
}
if (sizeof($va_collection_ids)) {
$qr_collections = $t_list->makeSearchResult('ca_collections', $va_collection_ids, array('restrictToRelationshipTypes' => isset($pa_options['limitToItemsRelatedToCollectionWithRelationshipTypes']) ? $pa_options['limitToItemsRelatedToCollectionWithRelationshipTypes'] : null));
$va_item_ids = array();
while ($qr_collections->nextHit()) {
$va_list_items = $qr_collections->get('ca_list_items', array('returnAsArray' => true));
foreach ($va_list_items as $vn_rel_id => $va_list_item) {
$va_item_ids[$vn_rel_id] = $va_list_item['item_id'];
}
}
if ($va_limit_to_listIDs = isset($pa_options['limitToListIDs']) && is_array($pa_options['limitToListIDs']) ? $pa_options['limitToListIDs'] : null) {
// for some reason the option comes back as array(0 => null) if no list is selected in UI
// -> have to make sure to catch this case here
if (sizeof($va_limit_to_listIDs) == 1 && empty($va_limit_to_listIDs[0])) {
$va_limit_to_listIDs = null;
}
}
if (is_array($va_limit_to_listIDs) && sizeof($va_item_ids)) {
// filter out items from tables we don't want
$qr_list_items = $t_list->makeSearchResult("ca_list_items", array_values($va_item_ids));
while ($qr_list_items->nextHit()) {
if (!in_array($qr_list_items->get('ca_list_items.list_id'), $va_limit_to_listIDs)) {
if (is_array($va_k = array_keys($va_item_ids, $qr_list_items->get('ca_list_items.item_id')))) {
foreach ($va_k as $vs_k) {
unset($va_list_items[$vs_k]);
}
}
}
}
}
}
} else {
$va_list_items = $t_list->getItemsForList($pm_list_name_or_id, array_merge($pa_options, array('returnHierarchyLevels' => caGetOption('indentForHierarchy', $pa_options, true), 'item_id' => $vn_root_id, 'extractValuesByUserLocale' => true, 'sort' => $vn_sort_type)));
}
}
if (!is_array($va_list_items)) {
$va_list_items = array();
}
//.........这里部分代码省略.........
示例4: getUIsAsDOM
public function getUIsAsDOM()
{
$t_list = new ca_lists();
$t_rel_type = new ca_relationship_types();
$vo_uis = $this->opo_dom->createElement("userInterfaces");
$qr_uis = $this->opo_db->query("SELECT * FROM ca_editor_uis ORDER BY ui_id");
while ($qr_uis->nextRow()) {
$vo_ui = $this->opo_dom->createElement("userInterface");
$t_ui = new ca_editor_uis($qr_uis->get("ui_id"));
$vs_type = $this->opo_dm->getTableName($qr_uis->get("editor_type"));
if (strlen($vs_code = $qr_uis->get("editor_code")) > 0) {
$vo_ui->setAttribute("code", $this->makeIDNO($vs_code));
} else {
$vo_ui->setAttribute("code", "standard_{$vs_type}_ui");
}
$vo_ui->setAttribute("type", $vs_type);
// labels
$vo_labels = $this->opo_dom->createElement("labels");
$qr_ui_labels = $this->opo_db->query("SELECT * FROM ca_editor_ui_labels WHERE ui_id=?", $qr_uis->get("ui_id"));
if ($qr_ui_labels->numRows() > 0) {
while ($qr_ui_labels->nextRow()) {
if ($vs_locale = $this->opt_locale->localeIDToCode($qr_ui_labels->get("locale_id"))) {
$vo_label = $this->opo_dom->createElement("label");
$vo_label->setAttribute("locale", $vs_locale);
$vo_label->appendChild($this->opo_dom->createElement("name", caEscapeForXML($qr_ui_labels->get("name"))));
$vo_labels->appendChild($vo_label);
}
}
} else {
$vo_label = $this->opo_dom->createElement("label");
$vo_label->setAttribute("locale", "en_US");
$vo_label->appendChild($this->opo_dom->createElement("name", caEscapeForXML($vs_code)));
$vo_labels->appendChild($vo_label);
}
$vo_ui->appendChild($vo_labels);
// type restrictions
$va_ui_type_restrictions = $t_ui->getTypeRestrictions();
if (sizeof($va_ui_type_restrictions) > 0) {
$vo_ui_type_restrictions = $this->opo_dom->createElement("typeRestrictions");
$vo_ui->appendChild($vo_ui_type_restrictions);
foreach ($va_ui_type_restrictions as $va_restriction) {
$vo_restriction = $this->opo_dom->createElement("restriction");
$vo_ui_type_restrictions->appendChild($vo_restriction);
/** @var BaseModelWithAttributes $t_instance */
$t_instance = $this->opo_dm->getInstanceByTableNum($va_restriction["table_num"]);
if ($t_instance instanceof BaseRelationshipModel) {
$t_rel_type->load($va_restriction["type_id"]);
$vo_restriction->setAttribute("type", $t_rel_type->get('type_code'));
} else {
$vs_type_code = $t_instance->getTypeListCode();
$va_item = $t_list->getItemFromListByItemID($vs_type_code, $va_restriction["type_id"]);
$vo_restriction->setAttribute("type", $va_item["idno"]);
}
}
}
// User and group access
$va_users = $t_ui->getUsers();
if (sizeof($va_users) > 0) {
$vo_user_access = $this->opo_dom->createElement("userAccess");
$vo_ui->appendChild($vo_user_access);
foreach ($va_users as $va_user_info) {
$vo_permission = $this->opo_dom->createElement("permission");
$vo_user_access->appendChild($vo_permission);
$vo_permission->setAttribute("user", $va_user_info["user_name"]);
$vo_permission->setAttribute("access", $this->_convertUserGroupAccessToString(intval($va_user_info['access'])));
}
}
$va_groups = $t_ui->getUserGroups();
if (sizeof($va_groups) > 0) {
$vo_group_access = $this->opo_dom->createElement("groupAccess");
$vo_ui->appendChild($vo_group_access);
foreach ($va_groups as $va_group_info) {
$vo_permission = $this->opo_dom->createElement("permission");
$vo_group_access->appendChild($vo_permission);
$vo_permission->setAttribute("group", $va_group_info["code"]);
$vo_permission->setAttribute("access", $this->_convertUserGroupAccessToString(intval($va_group_info['access'])));
}
}
// screens
$vo_screens = $this->opo_dom->createElement("screens");
$qr_screens = $this->opo_db->query("SELECT * FROM ca_editor_ui_screens WHERE parent_id IS NOT NULL AND ui_id=? ORDER BY rank,screen_id", $qr_uis->get("ui_id"));
while ($qr_screens->nextRow()) {
$t_screen = new ca_editor_ui_screens($qr_screens->get("screen_id"));
$vo_screen = $this->opo_dom->createElement("screen");
if ($vs_idno = $qr_screens->get("idno")) {
$vo_screen->setAttribute("idno", $this->makeIDNO($vs_idno));
}
$vo_screen->setAttribute("default", $qr_screens->get("is_default"));
$vo_labels = $this->opo_dom->createElement("labels");
$qr_screen_labels = $this->opo_db->query("SELECT * FROM ca_editor_ui_screen_labels WHERE screen_id=?", $qr_screens->get("screen_id"));
if ($qr_ui_labels->numRows() > 0) {
while ($qr_screen_labels->nextRow()) {
if ($vs_locale = $this->opt_locale->localeIDToCode($qr_screen_labels->get("locale_id"))) {
$vo_label = $this->opo_dom->createElement("label");
$vo_label->setAttribute("locale", $vs_locale);
$vo_label->appendChild($this->opo_dom->createElement("name", caEscapeForXML($qr_screen_labels->get("name"))));
if (strlen(trim($qr_screen_labels->get("description"))) > 0) {
$vo_label->appendChild($this->opo_dom->createElement("description", caEscapeForXML($qr_screen_labels->get("description"))));
}
$vo_labels->appendChild($vo_label);
//.........这里部分代码省略.........
示例5: GetHierarchyLevel
/**
* Given a item_id (request parameter 'id') returns a list of direct children for use in the hierarchy browser
* Returned data is JSON format
*/
public function GetHierarchyLevel()
{
$ps_bundle = (string) $this->request->getParameter('bundle', pString);
$pa_ids = explode(";", $ps_ids = $this->request->getParameter('id', pString));
if (!sizeof($pa_ids)) {
$pa_ids = array(null);
}
$t_item = $this->opo_item_instance;
$vs_template = $t_item->getAppConfig()->get('ca_list_items_hierarchy_browser_display_settings');
$va_lists = array();
if ($ps_lists = $this->request->getParameter('lists', pString)) {
$va_lists = explode(";", $ps_lists);
}
if (($vn_max_items_per_page = $this->request->getParameter('max', pInteger)) < 1 || $vn_max_items_per_page > 1000) {
$vn_max_items_per_page = 100;
}
$va_level_data = array();
foreach ($pa_ids as $pn_id) {
$va_tmp = explode(":", $pn_id);
$vn_id = $va_tmp[0];
$vn_start = (int) $va_tmp[1];
if ($vn_start < 0) {
$vn_start = 0;
}
if (!$vn_id && method_exists($t_item, "getHierarchyList")) {
if (!($pn_list_id = $this->request->getParameter('list_id', pInteger))) {
// no id so by default return list of available hierarchies
$va_list_items = $t_item->getHierarchyList();
if (sizeof($va_lists)) {
// filter out lists that weren't specified
foreach ($va_list_items as $vn_list_id => $va_list) {
if (!in_array($vn_list_id, $va_lists) && !in_array($va_list['list_code'], $va_lists)) {
unset($va_list_items[$vn_list_id]);
}
}
} else {
if ($this->request->getParameter('voc', pInteger)) {
// Only show vocabularies
foreach ($va_list_items as $vn_list_id => $va_list) {
if (!$va_list['use_as_vocabulary']) {
unset($va_list_items[$vn_list_id]);
}
}
}
}
}
} else {
if ($t_item->load($vn_id)) {
// id is the id of the parent for the level we're going to return
$t_list = new ca_lists($vn_list_id = $t_item->get('list_id'));
$vs_label_table_name = $this->opo_item_instance->getLabelTableName();
$vs_label_display_field_name = $this->opo_item_instance->getLabelDisplayField();
$va_list_items = $t_list->getItemsForList($vn_list_id, array('returnHierarchyLevels' => false, 'item_id' => $vn_id, 'extractValuesByUserLocale' => true, 'sort' => $t_list->get('sort_type'), 'directChildrenOnly' => true, 'limit' => $vn_max_items_per_page, 'start' => $vn_start));
// output
$va_display_values = caProcessTemplateForIDs($vs_template, 'ca_list_items', array_keys($va_list_items), array('requireLinkTags' => true, 'returnAsArray' => true));
$vn_c = 0;
foreach ($va_list_items as $vn_item_id => $va_item) {
unset($va_item['description']);
unset($va_item['icon']);
if (!$va_item[$vs_label_display_field_name]) {
$va_item[$vs_label_display_field_name] = $va_item['idno'];
}
if (!$va_item[$vs_label_display_field_name]) {
$va_item[$vs_label_display_field_name] = '???';
}
$va_item['name'] = $va_display_values[$vn_c];
if (!$va_item['name']) {
$va_item['name'] = '??? ' . $vn_item_id;
}
$va_item['table'] = 'ca_list_items';
// Child count is only valid if has_children is not null
$va_item['children'] = 0;
$va_list_items[$vn_item_id] = $va_item;
$vn_c++;
}
if (sizeof($va_list_items)) {
$o_db = new Db();
$qr_res = $o_db->query("\n\t\t\t\t\t\t\t\tSELECT count(*) c, parent_id\n\t\t\t\t\t\t\t\tFROM ca_list_items\n\t\t\t\t\t\t\t\tWHERE \n\t\t\t\t\t\t\t\t\tparent_id IN (" . join(",", array_keys($va_list_items)) . ") AND deleted = 0\n\t\t\t\t\t\t\t\tGROUP BY parent_id\n\t\t\t\t\t\t\t");
while ($qr_res->nextRow()) {
$va_list_items[$qr_res->get('parent_id')]['children'] = $qr_res->get('c');
}
}
}
}
$va_list_items['_sortOrder'] = array_keys($va_list_items);
$va_list_items['_primaryKey'] = $t_item->primaryKey();
// pass the name of the primary key so the hierbrowser knows where to look for item_id's
$va_list_items['_itemCount'] = $t_list ? $t_list->numItemsInList() : ($qr_res ? $qr_res->numRows() : 0);
$va_level_data[$pn_id] = $va_list_items;
}
if (!$this->request->getParameter('init', pInteger)) {
// only set remember "last viewed" if the load is done interactively
// if the GetHierarchyLevel() call is part of the initialization of the hierarchy browser
// then all levels are loaded, sometimes out-of-order; if we record these initialization loads
// as the 'last viewed' we can end up losing the true 'last viewed' value
//
//.........这里部分代码省略.........
示例6: caGetListCode
function caGetListCode($pn_list_id)
{
global $g_ca_get_list_code_cache;
if (isset($g_ca_get_list_code_cache[$pn_list_id])) {
return $g_ca_get_list_code_cache[$pn_list_id];
}
$t_list = new ca_lists($pn_list_id);
return $g_ca_get_list_code_cache[$pn_list_id] = $t_list->get('list_code');
}
示例7: _genTypeNav
/**
* Returns navigation fragment for types and subtypes of a given primary item type (Eg. ca_objects). Used to generate dynamic type menus
* from database by AppNavigation class.
*
* @param array $pa_params Array of parameters used to generate menu
* @return array List of types with subtypes ready for inclusion in a menu spec
*/
public function _genTypeNav($pa_params)
{
$t_subject = $this->opo_datamodel->getInstanceByTableName($this->ops_table_name, true);
$t_list = new ca_lists();
$t_list->load(array('list_code' => $t_subject->getTypeListCode()));
$t_list_item = new ca_list_items();
$t_list_item->load(array('list_id' => $t_list->getPrimaryKey(), 'parent_id' => null));
$va_hier = caExtractValuesByUserLocale($t_list_item->getHierarchyWithLabels());
$vn_sort_type = $t_list->get('default_sort');
$va_restrict_to_types = null;
if ($t_subject->getAppConfig()->get('perform_type_access_checking')) {
$va_restrict_to_types = caGetTypeRestrictionsForUser($this->ops_table_name, array('access' => __CA_BUNDLE_ACCESS_EDIT__));
}
$va_types = array();
if (is_array($va_hier)) {
$va_types_by_parent_id = array();
$vn_root_id = $t_list->getRootItemIDForList($t_subject->getTypeListCode());
foreach ($va_hier as $vn_item_id => $va_item) {
if ($vn_item_id == $vn_root_id) {
continue;
}
// skip root
$va_types_by_parent_id[$va_item['parent_id']][] = $va_item;
}
foreach ($va_hier as $vn_item_id => $va_item) {
if (is_array($va_restrict_to_types) && !in_array($vn_item_id, $va_restrict_to_types)) {
continue;
}
if ($va_item['parent_id'] != $vn_root_id) {
continue;
}
// does this item have sub-items?
$va_subtypes = array();
if (!(bool) $this->getRequest()->config->get($this->ops_table_name . '_navigation_new_menu_shows_top_level_types_only') && !(bool) $this->getRequest()->config->get($this->ops_table_name . '_enforce_strict_type_hierarchy')) {
if (isset($va_item['item_id']) && isset($va_types_by_parent_id[$va_item['item_id']]) && is_array($va_types_by_parent_id[$va_item['item_id']])) {
$va_subtypes = $this->_getSubTypes($va_types_by_parent_id[$va_item['item_id']], $va_types_by_parent_id, $vn_sort_type, $va_restrict_to_types);
}
}
switch ($vn_sort_type) {
case 0:
// label
// label
default:
$vs_key = $va_item['name_singular'];
break;
case 1:
// rank
$vs_key = sprintf("%08d", (int) $va_item['rank']);
break;
case 2:
// value
$vs_key = $va_item['item_value'];
break;
case 3:
// identifier
$vs_key = $va_item['idno_sort'];
break;
}
$va_types[$vs_key][] = array('displayName' => $va_item['name_singular'], 'parameters' => array('type_id' => $va_item['item_id']), 'is_enabled' => $va_item['is_enabled'], 'navigation' => $va_subtypes);
}
ksort($va_types);
}
$va_types_proc = array();
foreach ($va_types as $vs_sort_key => $va_items) {
foreach ($va_items as $vn_i => $va_item) {
$va_types_proc[] = $va_item;
}
}
return $va_types_proc;
}
示例8: getFacetContent
/**
* Return list of items from the specified table that are related to the current browse set. This is the method that actually
* pulls the facet content, regardless of whether the facet is cached yet or not. If you want to use the facet cache, call
* BrowseEngine::getFacet()
*
* @see BrowseEngine::getFacet()
* Options:
* checkAccess = array of access values to filter facets that have an 'access' field by
* checkAvailabilityOnly = if true then content is not actually fetch - only the availablility of content is verified
* user_id = If set item level access control is performed relative to specified user_id, otherwise defaults to logged in user
*/
public function getFacetContent($ps_facet_name, $pa_options = null)
{
global $AUTH_CURRENT_USER_ID;
$vs_browse_table_name = $this->ops_browse_table_name;
$vs_browse_table_num = $this->opn_browse_table_num;
$vn_user_id = isset($pa_options['user_id']) && (int) $pa_options['user_id'] ? (int) $pa_options['user_id'] : (int) $AUTH_CURRENT_USER_ID;
$vb_show_if_no_acl = (bool) ($this->opo_config->get('default_item_access_level') > __CA_ACL_NO_ACCESS__);
$t_user = new ca_users($vn_user_id);
if (is_array($va_groups = $t_user->getUserGroups()) && sizeof($va_groups)) {
$va_group_ids = array_keys($va_groups);
} else {
$va_group_ids = array();
}
if (!is_array($this->opa_browse_settings)) {
return null;
}
if (!isset($this->opa_browse_settings['facets'][$ps_facet_name])) {
return null;
}
if (!is_array($pa_options)) {
$pa_options = array();
}
$vb_check_availability_only = isset($pa_options['checkAvailabilityOnly']) ? (bool) $pa_options['checkAvailabilityOnly'] : false;
$va_all_criteria = $this->getCriteria();
$va_criteria = $this->getCriteria($ps_facet_name);
$va_facet_info = $this->opa_browse_settings['facets'][$ps_facet_name];
$t_subject = $this->getSubjectInstance();
if ($va_facet_info['relative_to']) {
$vs_browse_table_name = $va_facet_info['relative_to'];
$vs_browse_table_num = $this->opo_datamodel->getTableNum($vs_browse_table_name);
}
$vs_browse_type_limit_sql = '';
if (($va_browse_type_ids = $this->getTypeRestrictionList()) && sizeof($va_browse_type_ids)) {
// type restrictions
$vs_browse_type_limit_sql = '(' . $t_subject->tableName() . '.' . $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_facet_info['type_restrictions'])) {
// facet type restrictions bind a facet to specific types; we check them here
$va_restrict_to_types = $this->_convertTypeCodesToIDs($va_facet_info['type_restrictions']);
$vb_is_ok_to_browse = false;
foreach ($va_browse_type_ids as $vn_type_id) {
if (in_array($vn_type_id, $va_restrict_to_types)) {
$vb_is_ok_to_browse = true;
break;
}
}
if (!$vb_is_ok_to_browse) {
return array();
}
}
}
// Values to exclude from list attributes and authorities; can be idnos or ids
$va_exclude_values = caGetOption('exclude_values', $va_facet_info, array(), array('castTo' => 'array'));
$va_results = $this->opo_ca_browse_cache->getResults();
$vb_single_value_is_present = false;
$vs_single_value = isset($va_facet_info['single_value']) ? $va_facet_info['single_value'] : null;
$va_wheres = array();
switch ($va_facet_info['type']) {
# -----------------------------------------------------
case 'has':
$vn_state = null;
if (isset($va_all_criteria[$ps_facet_name])) {
break;
}
// only one instance of this facet allowed per browse
if (!($t_item = $this->opo_datamodel->getInstanceByTableName($vs_browse_table_name, true))) {
break;
}
$vs_yes_text = isset($va_facet_info['label_yes']) && $va_facet_info['label_yes'] ? $va_facet_info['label_yes'] : _t('Yes');
$vs_no_text = isset($va_facet_info['label_no']) && $va_facet_info['label_no'] ? $va_facet_info['label_no'] : _t('No');
$va_facet_values = array('yes' => array('id' => 1, 'label' => $vs_yes_text), 'no' => array('id' => 0, 'label' => $vs_no_text));
// Actually check that both yes and no values will result in something
if ($va_facet_info['element_code']) {
$t_element = new ca_metadata_elements();
if (!$t_element->load(array('element_code' => $va_facet_info['element_code']))) {
break;
}
$vs_element_code = $va_facet_info['element_code'];
$va_facet = array();
$va_counts = array();
foreach ($va_facet_values as $vs_state_name => $va_state_info) {
$va_wheres = array();
$va_joins = array();
if (!(bool) $va_state_info['id']) {
// no option
$va_wheres[] = $this->ops_browse_table_name . '.' . $t_item->primaryKey() . " NOT IN (select row_id from ca_attributes where table_num = " . $t_item->tableNum() . " AND element_id = " . $t_element->getPrimaryKey() . ")";
} else {
// yes option
$va_joins[] = "LEFT JOIN ca_attributes AS caa ON " . $this->ops_browse_table_name . '.' . $t_item->primaryKey() . " = caa.row_id AND " . $t_item->tableNum() . " = caa.table_num";
$va_wheres[] = "caa.element_id = " . $t_element->getPrimaryKey();
//.........这里部分代码省略.........
示例9: join
if (is_array($va_list) && sizeof($va_list)) {
print $va_setting_info['label'] . " = " . join("; ", $va_list) . "<br/>\n";
}
break;
case 'relationship_type':
case 'restrict_to_relationship_types':
if (!is_array($vs_setting_value)) {
$vs_setting_value = array($vs_setting_value);
}
if (is_array($va_list = $t_rel->relationshipTypeListToTypeCodes($t_relationship->tableName(), $vs_setting_value)) && sizeof($va_list)) {
print $va_setting_info['label'] . " = " . join("; ", $va_list) . "<br/>\n";
}
break;
case 'list':
if ($t_list->load($vs_setting_value)) {
print $va_setting_info['label'] . " = " . $t_list->getLabelForDisplay() . " [" . $t_list->get('list_code') . "]<br/>\n";
}
break;
default:
if (is_array($vs_setting_value) && sizeof($vs_setting_value)) {
print $va_setting_info['label'] . " = " . join("; ", $vs_setting_value) . "<br/>\n";
} else {
if (strlen($vs_setting_value)) {
print $va_setting_info['label'] . " = " . $vs_setting_value . "<br/>\n";
}
}
break;
}
}
?>
</td>
示例10: getElementAsDOM
private function getElementAsDOM($pn_parent_id)
{
$t_element = new ca_metadata_elements();
$t_list = new ca_lists();
$qr_elements = $this->opo_db->query("SELECT * FROM ca_metadata_elements WHERE parent_id = ? ORDER BY element_id", $pn_parent_id);
if (!$qr_elements->numRows()) {
return null;
}
$vo_elements = $this->opo_dom->createElement("elements");
while ($qr_elements->nextRow()) {
$vo_element = $this->opo_dom->createElement("metadataElement");
$vo_element->setAttribute("code", $this->makeIDNO($qr_elements->get("element_code")));
$vo_element->setAttribute("datatype", ca_metadata_elements::getAttributeNameForTypeCode($qr_elements->get("datatype")));
if ($qr_elements->get("list_id")) {
$t_list->load($qr_elements->get("list_id"));
$vo_element->setAttribute("list", $t_list->get("list_code"));
}
$vo_labels = $this->opo_dom->createElement("labels");
$qr_element_labels = $this->opo_db->query("SELECT * FROM ca_metadata_element_labels WHERE element_id=?", $qr_elements->get("element_id"));
while ($qr_element_labels->nextRow()) {
$vo_label = $this->opo_dom->createElement("label");
$vo_label->setAttribute("locale", $this->opt_locale->localeIDToCode($qr_element_labels->get("locale_id")));
$vo_label->appendChild($this->opo_dom->createElement("name", caEscapeForXML($qr_element_labels->get("name"))));
if (strlen(trim($qr_element_labels->get("description"))) > 0) {
$vo_label->appendChild($this->opo_dom->createElement("description", caEscapeForXML($qr_element_labels->get("description"))));
}
$vo_labels->appendChild($vo_label);
}
$vo_element->appendChild($vo_labels);
$t_element->load($qr_elements->get("element_id"));
$vo_settings = $this->opo_dom->createElement("settings");
if (is_array($va_settings = $t_element->getSettings())) {
foreach ($va_settings as $vs_setting => $va_values) {
if (is_null($va_values)) {
continue;
}
if (!is_array($va_values)) {
$va_values = array($va_values);
}
foreach ($va_values as $vs_value) {
$vo_setting = $this->opo_dom->createElement("setting", $vs_value);
$vo_setting->setAttribute("name", $vs_setting);
$vo_settings->appendChild($vo_setting);
}
}
}
$vo_element->appendChild($vo_settings);
$vo_sub_elements = $this->getElementAsDOM($qr_elements->get("element_id"));
if ($vo_sub_elements) {
$vo_element->appendChild($vo_sub_elements);
}
$vo_elements->appendChild($vo_element);
}
return $vo_elements;
}
示例11: GetHierarchyLevel
/**
* Given a item_id (request parameter 'id') returns a list of direct children for use in the hierarchy browser
* Returned data is JSON format
*/
public function GetHierarchyLevel()
{
$t_item = $this->opo_item_instance;
$va_lists = array();
if ($ps_lists = $this->request->getParameter('lists', pString)) {
$va_lists = explode(";", $ps_lists);
}
$va_items_for_locale = array();
if (!($pn_id = $this->request->getParameter('id', pInteger)) && method_exists($t_item, "getHierarchyList")) {
if (!($pn_list_id = $this->request->getParameter('list_id', pInteger))) {
// no id so by default return list of available hierarchies
$va_list_items = $t_item->getHierarchyList();
if (sizeof($va_lists)) {
// filter out lists that weren't specified
foreach ($va_list_items as $vn_list_id => $va_list) {
if (!in_array($vn_list_id, $va_lists) && !in_array($va_list['list_code'], $va_lists)) {
unset($va_list_items[$vn_list_id]);
}
}
} else {
if ($this->request->getParameter('voc', pInteger)) {
// Only show vocabularies
foreach ($va_list_items as $vn_list_id => $va_list) {
if (!$va_list['use_as_vocabulary']) {
unset($va_list_items[$vn_list_id]);
}
}
}
}
}
} else {
if ($t_item->load($pn_id)) {
// id is the id of the parent for the level we're going to return
$t_list = new ca_lists($vn_list_id = $t_item->get('list_id'));
$vs_label_table_name = $this->opo_item_instance->getLabelTableName();
$vs_label_display_field_name = $this->opo_item_instance->getLabelDisplayField();
$va_list_items = $t_list->getItemsForList($vn_list_id, array('returnHierarchyLevels' => false, 'item_id' => $pn_id, 'extractValuesByUserLocale' => true, 'sort' => $t_list->get('sort_type'), 'directChildrenOnly' => true));
// output
foreach ($va_list_items as $vn_item_id => $va_item) {
if (!$va_item[$vs_label_display_field_name]) {
$va_item[$vs_label_display_field_name] = $va_item['idno'];
}
if (!$va_item[$vs_label_display_field_name]) {
$va_item[$vs_label_display_field_name] = '???';
}
$va_item['name'] = $va_item[$vs_label_display_field_name];
// Child count is only valid if has_children is not null
$va_item['children'] = 0;
$va_list_items[$vn_item_id] = $va_item;
}
if (sizeof($va_list_items)) {
$o_db = new Db();
$qr_res = $o_db->query("\n\t\t\t\t\t\t\tSELECT count(*) c, parent_id\n\t\t\t\t\t\t\tFROM ca_list_items\n\t\t\t\t\t\t\tWHERE \n\t\t\t\t\t\t\t\tparent_id IN (" . join(",", array_keys($va_list_items)) . ")\n\t\t\t\t\t\t\tGROUP BY parent_id\n\t\t\t\t\t\t");
while ($qr_res->nextRow()) {
$va_list_items[$qr_res->get('parent_id')]['children'] = $qr_res->get('c');
}
}
}
}
if (!$this->request->getParameter('init', pInteger)) {
// only set remember "last viewed" if the load is done interactively
// if the GetHierarchyLevel() call is part of the initialization of the hierarchy browser
// then all levels are loaded, sometimes out-of-order; if we record these initialization loads
// as the 'last viewed' we can end up losing the true 'last viewed' value
//
// ... so the hierbrowser passes an extra 'init' parameters set to 1 if the GetHierarchyLevel() call
// is part of a browser initialization
$this->request->session->setVar($this->ops_table_name . '_browse_last_id', $pn_id);
}
$va_list_items['_primaryKey'] = $t_item->primaryKey();
// pass the name of the primary key so the hierbrowser knows where to look for item_id's
$this->view->setVar('dontShowSymbols', (bool) $this->request->getParameter('noSymbols', pString));
$this->view->setVar('list_item_list', $va_list_items);
return $this->render('list_item_hierarchy_level_json.php');
}