protected function _get_Captions_with_Counts_Grouped_by_Captions($request_data, array $listingSids = array()) { $items = array(); if (!empty($request_data[$this->field['field']]['tree'])) { $this->parent = $items = explode(',', $request_data[$this->field['field']]['tree']); $treeValues = $this->tree_values; $this->tree_values = array(); } if (SJB_Settings::getValue('enableBrowseByCounter')) { $request_data['access_type'] = array('accessible' => SJB_UserManager::getCurrentUserSID()); $criteria = SJB_SearchFormBuilder::extractCriteriaFromRequestData($request_data); $sqlTranslator = new SJB_SearchSqlTranslator('listings'); $whereStatement = $sqlTranslator->_getWhereStatement($criteria); $sql = "`{$this->field['field']}` != ''"; if (count($items) > 1) { $sql = " AND ("; foreach ($items as $key => $item) { if ($key == 0) { $sql .= " FIND_IN_SET('{$item}',`{$this->field['field']}`) "; } else { $sql .= " OR FIND_IN_SET('{$item}',`{$this->field['field']}`) "; } if (isset($treeValues[$item])) { $this->tree_values[$item] = $treeValues[$item]; } } $sql .= ")"; } if (!empty($listingSids)) { $sql .= ' AND `listings`.`sid` IN (' . implode(',', $listingSids) . ')'; } $sql = "SELECT `?w` AS caption, `sid` AS object_sid FROM `listings` {$whereStatement} AND {$sql}"; $result = SJB_DB::query($sql, $this->field['field']); $result = self::_getCountsByItems($result); } else { if (count($items) > 1) { foreach ($items as $item) { $this->tree_values[$item] = $treeValues[$item]; } } $result = self::getTreeItems($this->tree_values, SJB_ListingFieldTreeManager::getTreeDepthBySID($this->field['sid'])); } return $result; }
public function execute() { $field_sid = SJB_Request::getVar('field_sid', null); $field_info = SJB_ListingFieldManager::getFieldInfoBySID($field_sid); $node_sid = SJB_Request::getVar('node_sid', 0); $action = SJB_Request::getVar('action'); $template_processor = SJB_System::getTemplateProcessor(); if (empty($field_info)) { $errors['INVALID_FIELD_SID'] = 1; } else { switch ($action) { case 'add': $tree_item_value = $_REQUEST['tree_item_value']; $order = $_REQUEST['order']; if ($tree_item_value == '') { $field_errors['Value'] = 'EMPTY_VALUE'; } else { if ($order == 'begin') { SJB_ListingFieldManager::addTreeItemToBeginByParentSID($field_sid, $node_sid, $tree_item_value); } elseif ($order == 'end') { SJB_ListingFieldManager::addTreeItemToEndByParentSID($field_sid, $node_sid, $tree_item_value); } elseif ($order == 'after') { $after_tree_item_sid = $_REQUEST['after_tree_item_sid']; SJB_ListingFieldManager::addTreeItemAfterByParentSID($field_sid, $node_sid, $tree_item_value, $after_tree_item_sid); } $treeLevelsNumber = SJB_ListingFieldTreeManager::getTreeDepthBySID($field_sid); SJB_ListingFieldManager::addLevelField($treeLevelsNumber); } break; case 'save': $tree_item_value = $_REQUEST['tree_item_value']; if (empty($tree_item_value)) { $field_errors['Value'] = 'EMPTY_VALUE'; } else { SJB_ListingFieldManager::updateTreeItemBySID($node_sid, $tree_item_value); $order = SJB_Request::getVar('order', null); if ($order == 'begin') { SJB_ListingFieldManager::moveTreeItemToBeginBySID($node_sid); } elseif ($order == 'end') { SJB_ListingFieldManager::moveTreeItemToEndBySID($node_sid); } elseif ($order == 'after') { $after_tree_item_sid = $_REQUEST['after_tree_item_sid']; SJB_ListingFieldManager::moveTreeItemAfterBySID($node_sid, $after_tree_item_sid); } } break; case 'delete': $item_sid = SJB_Request::getVar('item_sid'); if (is_array($item_sid)) { foreach ($item_sid as $sid => $val) { SJB_ListingFieldManager::deleteTreeItemBySID($sid); } } else { if (isset($item_sid)) { SJB_ListingFieldManager::deleteTreeItemBySID($item_sid); } } break; case 'move_up': $item_sid = SJB_Request::getVar('item_sid'); SJB_ListingFieldManager::moveUpTreeItem($item_sid); break; case 'move_down': $item_sid = SJB_Request::getVar('item_sid'); SJB_ListingFieldManager::moveDownTreeItem($item_sid); break; case 'save_order': $item_order = SJB_Request::getVar('item_order', array()); SJB_ListingFieldManager::saveNewTreeItemsOrder($item_order); break; case 'sort': $node_sid = isset($_REQUEST['node_sid']) ? SJB_Request::getInt('node_sid') : 0; SJB_ListingFieldManager::sortTreeItems(SJB_Request::getVar('field_sid'), $node_sid, SJB_Request::getVar('sorting_order')); $template_processor->assign("sorting_order", SJB_Request::getVar('sorting_order')); break; case 'add_multiple': $node_sid = isset($_REQUEST['node_sid']) ? SJB_Request::getInt('node_sid') : 0; $item_sid = SJB_Request::getVar('field_sid'); $tree_item_value = SJB_Request::getVar('tree_multiItem_value', false); $after_tree_item_sid = SJB_Request::getVar('after_tree_item_sid', 0); $order = SJB_Request::getVar('order', false); if ($tree_item_value == '') { $field_errors['Value'] = 'EMPTY_VALUE'; } SJB_ListingFieldTreeManager::addMultupleTreeItem($item_sid, $node_sid, $tree_item_value, $order, $after_tree_item_sid); break; } $tree_items = SJB_ListingFieldManager::getTreeValuesByParentSID($field_sid, $node_sid); $parent_sid = SJB_ListingFieldManager::getTreeParentSID($node_sid); $tree_parent_items = SJB_ListingFieldManager::getTreeValuesByParentSID($field_sid, $parent_sid); } $template_processor->assign("field_sid", $field_sid); $template_processor->assign("node_sid", $node_sid); $template_processor->assign("field_info", $field_info); $template_processor->assign("tree_parent_items", $tree_parent_items); $template_processor->assign("tree_items", $tree_items); $node_info = SJB_ListingFieldManager::getTreeItemInfoBySID($node_sid); $node_path = SJB_ListingFieldManager::getTreeNodePath($node_sid); $node_path[0] = array('caption' => 'Root', 'sid' => 0); $node_info['node_path'] = $node_path; $template_processor->assign("node_info", $node_info); $current_level = isset($node_info['level']) ? $node_info['level'] : 0; $template_processor->assign("current_level", $current_level); $template_processor->assign("type_sid", $field_info['listing_type_sid']); $listing_type_info = SJB_ListingTypeManager::getListingTypeInfoBySID($field_info['listing_type_sid']); $template_processor->assign("type_info", $listing_type_info); $template_processor->assign("errors", isset($errors) ? $errors : null); $template_processor->assign("field_errors", isset($field_errors) ? $field_errors : null); $template_processor->display("edit_tree.tpl"); }
public function execute() { $listing_field_sid = SJB_Request::getVar('sid', null); $tp = SJB_System::getTemplateProcessor(); if (!is_null($listing_field_sid)) { $listing_field_info = SJB_ListingFieldManager::getFieldInfoBySID($listing_field_sid); $listing_field_info = array_merge($listing_field_info, $_REQUEST); $listing_field = new SJB_ListingField($listing_field_info); $listing_field->setSID($listing_field_sid); $form_submitted = SJB_Request::getVar('action', ''); if (!in_array($listing_field->field_type, array('video', 'picture', 'file', 'complex'))) { $profile_field = SJB_Request::getVar('profile_field', false); if ($form_submitted) { if ($profile_field) { $listing_field_info['default_value'] = ''; } else { $listing_field_info['profile_field_as_dv'] = ''; } } $default_value = array(); if ($listing_field->field_type != 'location') { $default_value = array('id' => 'default_value', 'sid' => isset($listing_field_info['sid']) ? $listing_field_info['sid'] : '', 'caption' => 'Default Value', 'value' => isset($listing_field_info['default_value']) ? $listing_field_info['default_value'] : '', 'type' => $listing_field->field_type, 'length' => '', 'is_required' => false, 'is_system' => true, 'add_parameter' => isset($listing_field_info['add_parameter']) ? $listing_field_info['add_parameter'] : ''); } switch ($listing_field->field_type) { case 'list': if (isset($listing_field_info['list_values'])) { $default_value['list_values'] = $listing_field_info['list_values']; } break; case 'multilist': if (isset($listing_field_info['list_values'])) { $default_value['list_values'] = $listing_field_info['list_values']; } if (!is_array($default_value['value'])) { if (strpos($default_value['value'], ',')) { $default_value['value'] = explode(',', $default_value['value']); } else { $default_value['value'] = array($default_value['value']); } } break; case 'tree': if (isset($listing_field_info['tree_values'])) { $default_value['tree_values'] = $listing_field_info['tree_values']; } if (isset($listing_field_info['display_as_select_boxes'])) { $default_value['display_as_select_boxes'] = $listing_field_info['display_as_select_boxes']; } unset($listing_field_info['choiceLimit']); break; case 'monetary': if (isset($listing_field_info['currency_values'])) { $default_value['currency_values'] = $listing_field_info['currency_values']; } break; } if ($listing_field->field_type != 'location') { $listing_field->addProperty($default_value); $profile_field_as_dv = array('id' => 'profile_field_as_dv', 'caption' => 'Default Value', 'value' => isset($listing_field_info['profile_field_as_dv']) ? $listing_field_info['profile_field_as_dv'] : '', 'type' => 'list', 'list_values' => SJB_UserProfileFieldManager::getAllFieldsInfo(), 'length' => '', 'is_required' => false, 'is_system' => true); $listing_field->addProperty($profile_field_as_dv); } if (in_array($listing_field->field_type, array('tree', 'multilist', 'list'))) { $sort_by_alphabet = array('id' => 'sort_by_alphabet', 'caption' => 'Sort Values By Alphabet', 'value' => isset($listing_field_info['sort_by_alphabet']) ? $listing_field_info['sort_by_alphabet'] : '', 'type' => 'boolean', 'lenght' => '', 'is_required' => false, 'is_system' => true); $listing_field->addProperty($sort_by_alphabet); } $tp->assign('profileFieldAsDV', !empty($listing_field_info['profile_field_as_dv'])); } if (in_array($listing_field->field_type, array('multilist', 'list'))) { $listing_field->addDisplayAsProperty($listing_field_info['display_as']); } // infil instructions should be the last element in form if (!in_array($listing_field->getFieldType(), array('complex', 'tree', 'location'))) { if ($form_submitted) { $listing_field->addInfillInstructions(SJB_Request::getVar('instructions')); } else { $listing_field->addInfillInstructions(isset($listing_field_info['instructions']) ? $listing_field_info['instructions'] : ''); } } if ('tree' == $listing_field->getFieldType()) { $listing_field->addProperty(SJB_TreeType::getDisplayAsDetail(isset($listing_field_info['display_as_select_boxes']) ? $listing_field_info['display_as_select_boxes'] : '')); $treeLevelsNumber = SJB_ListingFieldTreeManager::getTreeDepthBySID($listing_field_sid); $tp->assign('tree_levels_number', $treeLevelsNumber); // treee levels captions for ($i = 1; $i <= $treeLevelsNumber; $i++) { $levelID = 'level_' . $i; $listing_field->addProperty(array('id' => $levelID, 'caption' => $i . ' Level Name', 'value' => isset($listing_field_info[$levelID]) ? $listing_field_info[$levelID] : '', 'type' => 'string', 'length' => '250', 'is_required' => false, 'is_system' => true)); } } $edit_form = new SJB_Form($listing_field); $errors = array(); if ($form_submitted && $edit_form->isDataValid($errors)) { $old_listing_field_id = SJB_Request::getVar('old_listing_field_id', null); SJB_ListingFieldManager::saveListingField($listing_field); SJB_ListingFieldManager::changeListingPropertyIDs($listing_field_info['id'], $old_listing_field_id); if ($form_submitted == 'save_info') { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/listing-fields/'); } } $edit_form->registerTags($tp); $edit_form->makeDisabled('type'); if ($listing_field_info['id'] == 'Location' && empty($errors['ID'])) { $edit_form->makeDisabled('id'); } $tp->assign('object_sid', $listing_field); $tp->assign('form_fields', $edit_form->getFormFieldsInfo()); $tp->assign('errors', $errors); $tp->assign('field_type', $listing_field->getFieldType()); $tp->assign('listing_field_info', $listing_field_info); $tp->assign('field_sid', $listing_field_sid); $tp->display('edit_listing_field.tpl'); } }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $listing_field_sid = SJB_Request::getVar('sid', null); if (!is_null($listing_field_sid)) { $listingFieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($listing_field_sid); $old_listing_field_id = $listingFieldInfo['id']; $listingFieldInfo = array_merge($listingFieldInfo, $_REQUEST); $listing_field = new SJB_ListingField($listingFieldInfo, $listingFieldInfo['listing_type_sid']); $listing_field->setSID($listing_field_sid); $formSubmitted = SJB_Request::getVar('action', ''); if (!in_array($listing_field->field_type, array('video', 'picture', 'file', 'complex'))) { $profileField = SJB_Request::getVar('profile_field', false); if ($formSubmitted) { if ($profileField) { $listingFieldInfo['default_value'] = ''; } else { $listingFieldInfo['profile_field_as_dv'] = ''; } } $default_value = array('id' => 'default_value', 'sid' => isset($listingFieldInfo['sid']) ? $listingFieldInfo['sid'] : '', 'caption' => 'Default Value', 'value' => isset($listingFieldInfo['default_value']) ? $listingFieldInfo['default_value'] : '', 'type' => $listing_field->field_type, 'length' => '', 'is_required' => false, 'is_system' => true); $additionalParameters = array(); switch ($listing_field->field_type) { case 'list': if (isset($listingFieldInfo['list_values'])) { $additionalParameters = array('list_values' => $listingFieldInfo['list_values']); } break; case 'multilist': if (isset($listingFieldInfo['list_values'])) { $additionalParameters = array('list_values' => $listingFieldInfo['list_values']); } if (!is_array($default_value['value'])) { if (strpos($default_value['value'], ',')) { $default_value['value'] = explode(',', $default_value['value']); } else { $default_value['value'] = array($default_value['value']); } } break; case 'tree': if (isset($listingFieldInfo['tree_values'])) { $additionalParameters = array('tree_values' => $listingFieldInfo['tree_values']); } break; case 'monetary': if (isset($listingFieldInfo['currency_values'])) { $default_value['currency_values'] = $listingFieldInfo['currency_values']; } break; } $default_value = array_merge($default_value, $additionalParameters); $listing_field->addProperty($default_value); $user_groups = SJB_UserGroupManager::getAllUserGroupsInfo(); $list_values = array(); foreach ($user_groups as $user_group) { $list_values = array_merge($list_values, SJB_UserProfileFieldManager::getFieldsInfoByUserGroupSID($user_group['sid'])); } $profile_field_as_dv = array('id' => 'profile_field_as_dv', 'caption' => 'Default Value', 'value' => isset($listingFieldInfo['profile_field_as_dv']) ? $listingFieldInfo['profile_field_as_dv'] : '', 'type' => 'list', 'list_values' => $list_values, 'length' => '', 'is_required' => false, 'is_system' => true); $listing_field->addProperty($profile_field_as_dv); if (in_array($listing_field->field_type, array('tree', 'multilist', 'list'))) { $sort_by_alphabet = array('id' => 'sort_by_alphabet', 'caption' => 'Sort Values By Alphabet', 'value' => isset($listingFieldInfo['sort_by_alphabet']) ? $listingFieldInfo['sort_by_alphabet'] : '', 'type' => 'boolean', 'lenght' => '', 'is_required' => false, 'is_system' => true); $listing_field->addProperty($sort_by_alphabet); } $tp->assign('profileFieldAsDV', !empty($listingFieldInfo['profile_field_as_dv'])); } if (in_array($listing_field->field_type, array('multilist', 'list'))) { $listing_field->addDisplayAsProperty($listingFieldInfo['display_as']); } // infil instructions should be the last element in form if (!in_array($listing_field->getFieldType(), array('complex', 'tree', 'location')) && 'ApplicationSettings' != $listing_field->getPropertyValue('id')) { if ($formSubmitted) { $listing_field->addInfillInstructions(SJB_Request::getVar('instructions')); } else { $listing_field->addInfillInstructions(isset($listingFieldInfo['instructions']) ? $listingFieldInfo['instructions'] : ''); } } /** * "Display as" options for TREE TYPE */ if ('tree' == $listing_field->getFieldType()) { $listing_field->addProperty(SJB_TreeType::getDisplayAsDetail(isset($listingFieldInfo['display_as_select_boxes']) ? $listingFieldInfo['display_as_select_boxes'] : '')); $treeLevelsNumber = SJB_ListingFieldTreeManager::getTreeDepthBySID($listing_field_sid); $tp->assign('tree_levels_number', $treeLevelsNumber); // treee levels captions for ($i = 1; $i <= $treeLevelsNumber; $i++) { $levelID = 'level_' . $i; $listing_field->addProperty(array('id' => $levelID, 'caption' => $i . ' Level Name', 'value' => isset($listingFieldInfo[$levelID]) ? $listingFieldInfo[$levelID] : '', 'type' => 'string', 'length' => '250', 'is_required' => false, 'is_system' => true)); } } /* * end of ""Display as" options for TREE TYPE" */ $edit_form = new SJB_Form($listing_field); $edit_form->makeDisabled("type"); $errors = array(); if ($formSubmitted && $edit_form->isDataValid($errors)) { SJB_ListingFieldManager::saveListingField($listing_field); SJB_ListingFieldManager::changeListingPropertyIDs($listingFieldInfo['id'], $old_listing_field_id); if ($formSubmitted == 'save_info') { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings("SITE_URL") . "/edit-listing-type/?sid=" . $listing_field->getListingTypeSID()); } } $edit_form->registerTags($tp); $tp->assign("form_fields", $edit_form->getFormFieldsInfo()); $tp->assign("errors", $errors); $tp->assign("listing_type_sid", $listing_field->getListingTypeSID()); $tp->assign("field_type", $listing_field->getFieldType()); $tp->assign("field_sid", $listing_field->getSID()); $listing_type_info = SJB_ListingTypeManager::getListingTypeInfoBySID($listing_field->getListingTypeSID()); $tp->assign("listing_type_info", $listing_type_info); $tp->assign("listing_field_info", $listingFieldInfo); $tp->display("edit_listing_type_field.tpl"); } }
public static function getTreeDepthBySID($field_sid) { return SJB_ListingFieldTreeManager::getTreeDepthBySID($field_sid); }