public function prepareFieldsHolder($fieldsHolderID) { $fieldsHolderID = (string) $fieldsHolderID; if (!$fieldsHolderID) { return false; } if (!isset($this->fieldsHolders[$fieldsHolderID])) { $fieldsHolder = new SJB_FieldsHolder($fieldsHolderID); $this->fieldsHolders[$fieldsHolderID] = $fieldsHolder; $this->setCurrentFieldsHolder($fieldsHolderID); foreach ($fieldsHolder->getAFields() as $fieldOrder => $fieldInfo_) { $fieldSID = $fieldInfo_['b_field_sid']; $fieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($fieldSID); if ($this->fieldCanBeShown($fieldInfo)) { if (!empty($fieldInfo_['complex'])) { $fieldsHolder->saveFieldAsActive($fieldInfo_['complex'], $fieldSID); } else { $fieldsHolder->saveFieldAsActive($fieldSID); } $fieldsHolder->setFieldValueByKey($this->getBuilderType(), $fieldOrder, array_merge($fieldInfo_, $fieldInfo), $fieldInfo_['complex']); } else { if (!empty($fieldInfo_['html'])) { $fieldsHolder->setFieldValueByKey($this->getBuilderType(), $fieldOrder, $fieldInfo_); } /* check if this field is custom field */ if (in_array($fieldSID, $this->_customFields) || substr($fieldSID, 0, 9) == 'htmlBlock') { $fieldsHolder->saveFieldAsActive($fieldSID); } } } } $this->setCurrentFieldsHolder($fieldsHolderID); }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $listing_field_sid = SJB_Request::getVar('listing_sid', null); $errors = array(); $listingTypes = array(); if (!is_null($listing_field_sid)) { $listing_field = SJB_ListingFieldManager::getFieldInfoBySID($listing_field_sid); $listing_type_id = 'Job/Resume'; if ($listing_field['listing_type_sid'] != 0) { $listing_type_id = SJB_ListingTypeManager::getListingTypeIDBySID($listing_field['listing_type_sid']); array_push($listingTypes, SJB_ListingTypeManager::getListingTypeInfoBySID(SJB_Array::get($listing_field, 'listing_type_sid'))); } else { $listingTypes = SJB_ListingTypeManager::getAllListingTypesInfo(); } $tp->assign('listingTypesInfo', $listingTypes); $tp->assign('listing_type_id', $listing_type_id); $tp->assign('listing_sid', $listing_field_sid); $tp->assign('listing_field_info', $listing_field); $tp->assign('listing_type_sid', $listing_field['listing_type_sid']); } else { $errors[] = 'The system cannot proceed as Listing SID is not set'; } $tp->assign('errors', $errors); $tp->display('attention_listing_type_field.tpl'); }
public static function getListingFieldIDBySID($listing_field_sid) { $listing_field_info = SJB_ListingFieldManager::getFieldInfoBySID($listing_field_sid); if (empty($listing_field_info)) { return null; } return $listing_field_info['id']; }
public function execute() { $edit_list_controller = new SJB_ListingComplexEditListController($_REQUEST); $template_processor = SJB_System::getTemplateProcessor(); if (!$edit_list_controller->isvalidFieldSID()) { echo 'Invalid Listing Field SID is specified'; } else { switch ($edit_list_controller->getAction()) { case 'add': if ($edit_list_controller->isValidValueSubmitted()) { if (!$edit_list_controller->saveItem()) { $template_processor->assign("error", 'LIST_VALUE_ALREADY_EXISTS'); } } else { $template_processor->assign("error", 'LIST_VALUE_IS_EMPTY'); } break; case 'add_multiple': if ($edit_list_controller->isValidMultiValueSubmitted()) { if (!$edit_list_controller->saveItem(true)) { $template_processor->assign("error", 'LIST_VALUE_ALREADY_EXISTS'); } } else { $template_processor->assign("error", 'LIST_VALUE_IS_EMPTY'); } break; case 'delete': //$edit_list_controller->deleteItem(); break; $item_sid = SJB_Request::getVar('item_sid'); if (is_array($item_sid)) { foreach ($item_sid as $sid => $val) { $edit_list_controller->deleteItem($sid); } } else { $edit_list_controller->deleteItem(); } break; case 'move_up': $edit_list_controller->moveUpItem(); break; case 'move_down': $edit_list_controller->moveDownItem(); break; case 'save_order': $item_order = SJB_Request::getVar('item_order'); $edit_list_controller->saveNewItemsOrder($item_order); break; } $display_list_controller = new SJB_ListingComplexDisplayListController($_REQUEST); $field_info = $display_list_controller->field_info; $parentFieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($field_info['field_sid']); $listing_type_info = SJB_ListingTypeManager::getListingTypeInfoBySID($parentFieldInfo['listing_type_sid']); $display_list_controller->field_info['type_info'] = $listing_type_info; $display_list_controller->field_info['parent_field'] = $parentFieldInfo; $display_list_controller->display("listing_complex_list_editing.tpl"); } }
public function execute() { $listing_field_sid = SJB_Request::getVar('sid', null); if (!is_null($listing_field_sid)) { $listing_field_info = SJB_ListingFieldManager::getFieldInfoBySID($listing_field_sid); SJB_ListingFieldManager::deleteListingFieldBySID($listing_field_sid); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/edit-listing-type/?sid=" . $listing_field_info['listing_type_sid']); } echo 'The system cannot proceed as Listing Field SID is not set'; }
function getData($non_existed_values_flag, $values = array()) { $listFieldsInfo = SJB_ListingFieldManager::getFieldsInfoByType('list'); $multilistFieldsInfo = SJB_ListingFieldManager::getFieldsInfoByType('multilist'); $fieldsInfo = array_merge($listFieldsInfo, $multilistFieldsInfo); foreach ($fieldsInfo as $key => $fieldInfo) { if (empty($fieldInfo['parent_sid'])) { $fieldsInfo[$fieldInfo['id']] = $fieldInfo; } unset($fieldsInfo[$key]); } $result = array(); foreach ($this->properties_names as $key => $property_name) { if (in_array($property_name, array_keys($fieldsInfo)) && isset($values[$key])) { $fieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($fieldsInfo[$property_name]['sid']); if (!empty($fieldInfo['parent_sid']) && $fieldInfo['id'] == 'State') { $fieldInfo['list_values'] = SJB_StatesManager::getStatesNamesByCountry(false, true); } switch ($fieldInfo['type']) { case 'list': foreach ($fieldInfo['list_values'] as $listValues) { if ($listValues['caption'] == $values[$key]) { $result[$property_name] = $listValues['id']; break; } } break; case 'multilist': $multilistValues = explode(',', $values[$key]); $multilistDisplayValues = array(); foreach ($fieldInfo['list_values'] as $listValues) { if (in_array($listValues['caption'], $multilistValues)) { $multilistDisplayValues[] = $listValues['id']; } } $result[$property_name] = implode(',', $multilistDisplayValues); break; } } else { if (strpos($property_name, 'date') && strtotime($values[$key]) == false) { if ($property_name == 'activation_date') { $values[$key] = date('Y-m-d H:i:s'); } else { $values[$key] = ''; } } $result[$property_name] = isset($values[$key]) ? $values[$key] : null; } } $result = $result + $this->_getTreeValues($values, $non_existed_values_flag); return $result; }
public function execute() { $listing_field_sid = SJB_Request::getVar('sid', null); if (!is_null($listing_field_sid)) { $listing_field_info = SJB_ListingFieldManager::getFieldInfoBySID($listing_field_sid); if ($_REQUEST['action'] == 'move_up') { SJB_ListingFieldManager::moveUpFieldBySID($listing_field_sid); } elseif ($_REQUEST['action'] == 'move_down') { SJB_ListingFieldManager::moveDownFieldBySID($listing_field_sid); } SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/edit-listing-type/?sid=" . $listing_field_info['listing_type_sid']); } else { echo 'The system cannot proceed as Listing Field SID is not set'; } }
/** * Check 'sort_by_alphabet' flag for field, and sort values if needed * * @param $values */ private function getSortedValues($values) { $fieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($this->field['sid']); if (SJB_Array::get($fieldInfo, 'sort_by_alphabet') > 0) { $i18n = SJB_I18N::getInstance(); // translate captions to current language $translates = array(); foreach ($values as $value) { $translates[] = $i18n->gettext('', $value); } // we need to recover keys for $values after array_multisort $keys = array_keys($values); // sort $keys and $values order by $translates sort array_multisort($translates, SORT_STRING, $keys, $values); // restore keys for $values $values = array_combine($keys, $values); } return $values; }
public function execute() { $fieldsHolderID = SJB_Request::getVar('fieldsHolderID', null); if (!$fieldsHolderID) { throw new Exception('FieldsHolderID is not specified'); } $formBuilder = SJB_FormBuilderManager::getFormBuilder(); $formBuilder->prepareFieldsHolder($fieldsHolderID); $tp = $formBuilder->getChargedTemplateProcessor(); $activeFields = $formBuilder->getActiveFields(); $locationKeys = array(); $sortKeys = array(); foreach ($activeFields as $key => $activeField) { if (!empty($activeField['parent_sid'])) { $parentInfo = SJB_ListingFieldManager::getFieldInfoBySID($activeField['parent_sid']); if ($formBuilder->getBuilderType() == 'search') { $activeFields[$key] = $parentInfo; $activeFields[$key]['fields'] = array(); $activeFields[$key]['fields'][$activeField['sid']] = $activeField; $activeFields[$key]['fields'][$activeField['sid']]['parentID'] = $parentInfo['id']; $activeFields[$key]['b_order'] = $activeField['b_order']; } } elseif ($activeField['type'] == 'location') { $activeFields[$key]['fields'] = array(); if ($formBuilder->getBuilderType() == 'search') { $activeFields[$key]['fields'][$activeField['sid']] = $activeField; } } } foreach ($activeFields as $key => $activeField) { $sortKeys[$key] = $activeField['b_order']; } array_multisort($sortKeys, SORT_ASC, SORT_REGULAR, $activeFields); $tp->assign('fields_active', $activeFields); $tp->assign('fieldsHolderID', $fieldsHolderID); $tp->assign('holderType', SJB_Request::getVar('holderType', 'wide')); $tp->assign('holderTitle', SJB_Request::getVar('holderTitle', '')); $tp->assign('listingTypeID', $formBuilder->getListingTypeID()); $template = $formBuilder->getFormFieldSetTemplate(); $tp->display('../builder/' . $template); }
public function execute() { $template_processor = SJB_System::getTemplateProcessor(); $errors = array(); $ListingFieldListItemManager = new SJB_ListingFieldListItemManager(); if (!isset($_REQUEST['field_sid'], $_REQUEST['item_sid'])) { echo 'The system cannot proceed as some key paramaters are missed'; } else { if (is_null($list_item = $ListingFieldListItemManager->getListItemBySID($_REQUEST['item_sid']))) { echo 'Wrong parameters are specified'; } else { $list_item_info['value'] = $list_item->getValue(); $template_processor->assign("list_item_info", $list_item_info); $form_submitted = SJB_Request::getVar('action', ''); if ($form_submitted) { if (empty($_REQUEST['list_item_value'])) { $errors = array('Value' => 'EMPTY_VALUE'); } else { $list_item->setValue(trim($_REQUEST['list_item_value'])); $ListingFieldListItemManager->saveListItem($list_item); if ($form_submitted == 'save') { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/edit-listing-field/edit-list/?field_sid=" . $_REQUEST['field_sid']); } } } $listing_field = SJB_ListingFieldManager::getFieldBySID($_REQUEST['field_sid']); $listing_field_info = SJB_ListingFieldManager::getFieldInfoBySID($_REQUEST['field_sid']); $template_processor->assign("listing_field_info", $listing_field_info); $template_processor->assign("listing_type_sid", $listing_field->getListingTypeSID()); $template_processor->assign("field_sid", $_REQUEST['field_sid']); $template_processor->assign("item_sid", $_REQUEST['item_sid']); $template_processor->assign("list_item_value", htmlspecialchars($list_item->getValue())); $template_processor->assign("errors", $errors); $template_processor->assign("listing_type_info", SJB_ListingTypeManager::getListingTypeInfoBySID($listing_field->getListingTypeSID())); $template_processor->display("listing_list_item_editing.tpl"); } } }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $action = SJB_Request::getVar('action', 'list'); $fieldSID = SJB_Request::getVar('field_sid', false); $parentSID = SJB_Request::getVar('sid', false); $errors = null; if ($fieldSID) { $tp->assign('field_sid', $fieldSID); $field_info = SJB_ListingFieldManager::getFieldInfoBySID($fieldSID); $listing_type_info = SJB_ListingTypeManager::getListingTypeInfoBySID($field_info['listing_type_sid']); $tp->assign("field_info", $field_info); $tp->assign("type_info", $listing_type_info); $tp->assign("type_sid", isset($listing_type_info['sid']) ? $listing_type_info['sid'] : false); switch ($action) { case 'edit': $form_submitted = SJB_Request::getVar('submit_form', false); $sid = SJB_Request::getVar('sid', 0); $listingFieldInfo = SJB_ListingFieldDBManager::getListingFieldInfoBySID($sid); $listingFieldInfo = array_merge($listingFieldInfo, $_REQUEST); $listingField = new SJB_ListingField($listingFieldInfo); $listingField->deleteProperty('type'); $listingField->addProperty(array('id' => 'hidden', 'caption' => 'Hidden', 'type' => 'boolean', 'value' => isset($listingFieldInfo['hidden']) ? $listingFieldInfo['hidden'] : '', 'is_system' => true)); $profileField = SJB_Request::getVar('profile_field', false); if ($form_submitted) { if ($profileField) { $listingFieldInfo['default_value'] = ''; $listingFieldInfo['profile_field_as_dv'] = $listingFieldInfo['id']; } else { $listingFieldInfo['profile_field_as_dv'] = ''; } } if (!empty($listingFieldInfo['default_value_setting'])) { if ($listingFieldInfo['default_value_setting'] == 'default_country') { $listingFieldInfo['default_value'] = $listingFieldInfo['default_value_setting']; $listingFieldInfo['profile_field_as_dv'] = ''; } elseif ($listingFieldInfo['default_value_setting'] == 'profile_field') { $listingFieldInfo['default_value'] = ''; $listingFieldInfo['profile_field_as_dv'] = $listingFieldInfo['id']; } } $additionalParameters = array(); if ($listingFieldInfo['id'] == 'Country') { $additionalParameters = array('list_values' => SJB_CountriesManager::getAllCountriesCodesAndNames()); $display_as = array('id' => 'display_as', 'caption' => 'Display Country as', 'type' => 'list', 'value' => isset($listingFieldInfo['display_as']) ? $listingFieldInfo['display_as'] : '', 'list_values' => array(array('id' => 'country_name', 'caption' => 'Country Name'), array('id' => 'country_code', 'caption' => 'Country Code')), 'is_system' => true, 'is_required' => true); } elseif ($listingFieldInfo['id'] == 'State') { $defaultCountry = SJB_ListingFieldManager::getDefaultCountryByParentSID($fieldSID); $additionalParameters['list_values'] = array(); if (is_numeric($defaultCountry)) { $additionalParameters['list_values'] = SJB_StatesManager::getStatesNamesByCountry($defaultCountry); } elseif (!empty($defaultCountry)) { $listingFieldInfo['profile_field_as_dv'] = $listingFieldInfo['id']; $tp->assign('disableField', 1); } else { $additionalParameters['comment'] = 'Please select default country first to select default State'; } $display_as = array('id' => 'display_as', 'caption' => 'Display State as', 'type' => 'list', 'value' => isset($listingFieldInfo['display_as']) ? $listingFieldInfo['display_as'] : '', 'list_values' => array(array('id' => 'state_name', 'caption' => 'State Name'), array('id' => 'state_code', 'caption' => 'State Code')), 'is_system' => true, 'is_required' => true); } $default_value = array('id' => 'default_value', 'sid' => isset($listingFieldInfo['sid']) ? $listingFieldInfo['sid'] : '', 'caption' => 'Default Value', 'value' => isset($listingFieldInfo['default_value']) ? $listingFieldInfo['default_value'] : '', 'type' => $listingField->field_type, 'length' => '', 'is_required' => false, 'is_system' => true, 'add_parameter' => isset($listingFieldInfo['add_parameter']) ? $listingFieldInfo['add_parameter'] : ''); $default_value = array_merge($default_value, $additionalParameters); $listingField->addProperty($default_value); $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', 'length' => '', 'is_required' => false, 'is_system' => true); $listingField->addProperty($profile_field_as_dv); if (isset($display_as)) { $listingField->addProperty($display_as); } if ($form_submitted) { $listingField->addInfillInstructions(SJB_Request::getVar('instructions')); } else { $listingField->addInfillInstructions(isset($listingFieldInfo['instructions']) ? $listingFieldInfo['instructions'] : ''); } $ListingFieldForm = new SJB_Form($listingField); $ListingFieldForm->registerTags($tp); $listingField->setSID($sid); $addValidParam = array('field' => 'parent_sid', 'value' => $parentSID); if ($form_submitted && $ListingFieldForm->isDataValid($errors, $addValidParam)) { SJB_ListingFieldManager::saveListingField($listingField); if ($listingFieldInfo['id'] == 'Country') { $profileFieldAsDv = $listingField->getPropertyValue('profile_field_as_dv'); if ($profileFieldAsDv) { $listingFieldsInfo = SJB_ListingFieldManager::getListingFieldsInfoByParentSID($fieldSID); foreach ($listingFieldsInfo as $fieldInfo) { if ($fieldInfo['id'] == 'State') { $listingField = new SJB_ListingField($fieldInfo); $listingField->setSID($fieldInfo['sid']); $default_value = array('id' => 'default_value', 'sid' => isset($fieldInfo['sid']) ? $fieldInfo['sid'] : '', 'caption' => 'Default Value', 'value' => '', 'type' => $listingField->field_type, 'length' => '', 'is_required' => false, 'is_system' => true, 'add_parameter' => isset($fieldInfo['add_parameter']) ? $fieldInfo['add_parameter'] : ''); $listingField->addProperty($default_value); $profile_field_as_dv = array('id' => 'profile_field_as_dv', 'caption' => 'Default Value', 'value' => 'State', 'type' => 'list', 'length' => '', 'is_required' => false, 'is_system' => true); $listingField->addProperty($profile_field_as_dv); SJB_ListingFieldManager::saveListingField($listingField); } } } } if (SJB_Request::getVar('apply') == 'no' && empty($errors)) { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings("SITE_URL") . "/edit-listing-field/edit-location-fields/?field_sid=" . $fieldSID); } } $ListingFieldForm->makeDisabled('id'); $tp->assign('profileFieldAsDV', !empty($listingFieldInfo['profile_field_as_dv'])); $tp->assign('listingFieldInfo', $listingFieldInfo); $tp->assign("field_type", $listingField->getFieldType()); $tp->assign("sid", $sid); $tp->assign("form_fields", $ListingFieldForm->getFormFieldsInfo()); $tp->assign("errors", $errors); $tp->display("edit_location_field.tpl"); break; case 'move_up': SJB_ListingFieldManager::moveUpFieldBySID($fieldSID); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/edit-listing-field/edit-location-fields/?field_sid=" . $parentSID); break; case 'move_down': SJB_ListingFieldManager::moveDownFieldBySID($fieldSID); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/edit-listing-field/edit-location-fields/?field_sid=" . $parentSID); break; } if ($action == 'list') { $listingFieldsInfo = SJB_ListingFieldManager::getListingFieldsInfoByParentSID($fieldSID); $listingFields = array(); $listingFieldSids = array(); foreach ($listingFieldsInfo as $listingFieldInfo) { $listingField = new SJB_ListingField($listingFieldInfo); $listingField->addProperty(array('id' => 'hidden', 'caption' => 'Hidden', 'type' => 'boolean', 'value' => isset($listingFieldInfo['hidden']) ? $listingFieldInfo['hidden'] : '', 'is_system' => true)); $listingField->setSID($listingFieldInfo['sid']); $listingFields[] = $listingField; $listingFieldSids[] = $listingFieldInfo['sid']; } $form_collection = new SJB_FormCollection($listingFields); $form_collection->registerTags($tp); $tp->assign("listing_field_sids", $listingFieldSids); $tp->display("listing_location_fields.tpl"); } } }
/** * retrieve fields from database */ protected function getFields() { $result = SJB_DB::query('SELECT `field_sid` as `b_field_sid`, `order` as `b_order`,`html`,`complex`,`fields_holder_id` FROM `formbuilders_fieldsholders` WHERE `fields_holder_id` = ?s AND `listing_type_sid` = ?n AND `theme` = ?s ORDER BY `b_order` ASC', $this->fieldsHolderID, self::getListingTypeSID(), SJB_TemplateSupplier::getUserCurrentTheme()); if ($result) { foreach ($result as $aFieldInfo) { $fieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($aFieldInfo['b_field_sid']); if (!$fieldInfo['hidden'] && !SJB_Users_CookiePreferences::isFieldDisabled($fieldInfo['type'])) { $this->aFields[$aFieldInfo['b_order']] = $aFieldInfo; } } } }
public function execute() { $template_processor = SJB_System::getTemplateProcessor(); $encodingFromCharset = SJB_Request::getVar('encodingFromCharset', 'UTF-8'); $file_info = SJB_Array::get($_FILES, 'imported_tree_file'); $field_sid = isset($_REQUEST['field_sid']) ? $_REQUEST['field_sid'] : null; $field_info = SJB_ListingFieldManager::getFieldInfoBySID($field_sid); $template_processor->assign("field", $field_info); $template_processor->assign("field_sid", $field_sid); $listing_type_info = SJB_ListingTypeManager::getListingTypeInfoBySID($field_info['listing_type_sid']); $template_processor->assign("type_info", $listing_type_info); $template_processor->assign('charSets', SJB_HelperFunctions::getCharSets()); if (!strcasecmp("tree", $field_info['type'])) { if (empty($_FILES['imported_tree_file']['name'])) { $errors['File'] = 'EMPTY_VALUE'; } if (isset($_FILES['imported_tree_file']['error']) && $_FILES['imported_tree_file']['error']) { $errors[] = SJB_UploadFileManager::getErrorId($_FILES['imported_tree_file']['error']); } $start_line = SJB_Request::getVar('start_line', null); if (empty($start_line)) { $errors['Start Line'] = 'EMPTY_VALUE'; } elseif (!is_numeric($start_line) || !is_int($start_line + 0)) { $errors['Start Line'] = 'NOT_INT_VALUE'; } $form_submitted = $_SERVER['REQUEST_METHOD'] == 'POST'; if ($form_submitted) { if (!SJB_ImportFile::isValidFileExtensionByFormat($_REQUEST['file_format'], $_FILES['imported_tree_file'])) { $errors['File'] = 'DO_NOT_MATCH_SELECTED_FILE_FORMAT'; } } $is_data_valid = empty($errors); if ($form_submitted && $is_data_valid) { if (!strcasecmp($_REQUEST['file_format'], 'excel')) { $import_file = new SJB_ImportFileXLS($file_info); } else { $import_file = new SJB_ImportFileCSV($file_info, ','); } $import_file->parse($encodingFromCharset); $imported_data = $import_file->getData(); $count = 0; foreach ($imported_data as $key => $importedColumn) { if (!$importedColumn || $start_line > $key) { continue; } if (SJB_ListingFieldTreeManager::importTreeItem($field_sid, $importedColumn)) { $count++; } } $template_processor->assign("count", $count); $template_processor->display("import_tree_data_statistics.tpl"); } else { if (!$form_submitted) { $errors = null; } $template_processor->assign("errors", isset($errors) ? $errors : null); $template_processor->assign("uploadMaxFilesize", SJB_UploadFileManager::getIniUploadMaxFilesize()); $template_processor->display("import_tree_data.tpl"); } } else { echo 'invalid Tree SID is specified'; } }
/** * @param array $menu * @param $item * @param $menuKey * @param $itemKey */ private function removeSimilarHighlight(array &$menu, $item, $menuKey, $itemKey) { if (in_array(SJB_System::getSystemSettings('SITE_URL') . $this->pageID, $item['highlight'])) { $highlight = ''; $highlightPrefix = '/manage-'; $userSid = SJB_Request::getVar('user_sid', 0); switch ($menuKey) { case 'Listing Configuration': $fieldSID = SJB_Request::getVar('field_sid', false); if ($fieldSID) { $fieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($fieldSID); //remove unwanted highlights if ($fieldInfo['listing_type_sid'] == 0 && $item['title'] == 'Listing Types' || $fieldInfo['listing_type_sid'] != 0 && $item['title'] == 'Common Fields') { $highlight = $this->pageID; } } break; case 'Listing Management': if (preg_match('/manage-resume|job|[a-zA-Z0-9]+-listings/', $item['reference']) && !preg_match('/import|export|flagged-listings/', $item['reference'])) { if (!($listingTypeId = SJB_Request::getVar('listing_type_id', null))) { $listingId = SJB_Request::getVar('listing_id', null); $listingInfo = SJB_ListingManager::getListingInfoBySID($listingId); $listingTypeId = SJB_ListingTypeManager::getListingTypeIDBySID($listingInfo['listing_type_sid']); } $highlight = strtolower($listingTypeId); } break; case 'Users': $highlightPrefix = '/manage-users/'; if ($userSid) { $userGroupSid = SJB_UserManager::getUserGroupByUserSid($userSid); $userGroupInfo = SJB_UserGroupManager::getUserGroupInfoBySID($userGroupSid); if (preg_match($highlightPrefix, $item['reference'])) { $highlight = strtolower($userGroupInfo['id']); } } else { if ($role = SJB_Request::getVar('role', null)) { $type = SJB_Request::getVar('type', null); // for user permissions if ($type == 'user') { $role = SJB_UserManager::getUserGroupByUserSid($role); $userGroupInfo = SJB_UserGroupManager::getUserGroupInfoBySID($role); $highlight = strtolower($userGroupInfo['id']); } else { if (in_array($type, array('group', 'guest'))) { $highlightPrefix = 'user-'; $highlight = 'group'; } } } else { //retrieve user group from uri if (preg_match('|./(\\w*)/?|u', urldecode(SJB_Navigator::getURI()), $userGroupHub)) { $highlight = array_pop($userGroupHub); } //remove unwanted highlights if ($this->pageID == '/email-log/') { $highlight = $this->pageID; } } } break; case 'System Configuration': //remove unwanted highlights if ($this->pageID == '/email-log/' && $userSid) { $highlight = $this->pageID; } break; default: } if (!$highlight || strpos($item['reference'], $highlightPrefix . $highlight) !== false) { if (!isset($this->handledHighlightGroups[$highlightPrefix])) { $this->handledHighlightGroups[$highlightPrefix] = true; $handledHighlightGroups[$highlightPrefix] = true; $menu[$menuKey][$itemKey]['active'] = true; $menu[$menuKey]['active'] = true; } } } }
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 static function getAllFieldsByPageSIDForForm($pageSID) { $fields = SJB_DB::query('SELECT * FROM `relations_listing_fields_posting_pages` WHERE `page_sid` = ?n ORDER BY `order`', $pageSID); $form_fields = array(); foreach ($fields as $field) { $fieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($field['field_sid']); if (empty($fieldInfo)) { continue; } $form_field['caption'] = isset($fieldInfo['caption']) ? $fieldInfo['caption'] : ''; $form_field['is_system'] = isset($fieldInfo['is_system']) ? $fieldInfo['is_system'] : ''; $form_field['id'] = isset($fieldInfo['id']) ? $fieldInfo['id'] : ''; $form_field['is_required'] = isset($fieldInfo['is_required']) ? $fieldInfo['is_required'] : ''; $form_field['disabled'] = false; $form_field['order'] = isset($fieldInfo['order']) ? $fieldInfo['order'] : ''; $form_field['comment'] = isset($fieldInfo['comment']) ? $fieldInfo['comment'] : ''; $form_field['type'] = isset($fieldInfo['type']) ? $fieldInfo['type'] : ''; $form_field['instructions'] = isset($fieldInfo['instructions']) ? $fieldInfo['instructions'] : ''; $form_field['use_autocomplete'] = isset($fieldInfo['use_autocomplete']) ? $fieldInfo['use_autocomplete'] : ''; $form_field['is_classifieds'] = isset($fieldInfo['is_classifieds']) ? $fieldInfo['is_classifieds'] : ''; $form_fields[$fieldInfo['id']] = $form_field; } return $form_fields; }
private function _getRequestdata(array $parameters) { $res = array(); for ($i = 0; $i < $this->getLevel(); $i++) { $value = $this->_getValue($i); $filterItem = $this->schema[$i]; $field = $filterItem['field']; $parent = isset($parameters['parent']) ? $parameters['parent'] : false; $this->type = $filterItem['type']; switch ($filterItem['type']) { case 'tree': $sids = SJB_ListingFieldTreeManager::getChildrenSIDBySID($value); $sids = array_merge($sids, array($value)); $sids = implode(",", $sids); $res[$field]['tree'] = $sids; break; case 'string': case 'integer': $res[$field]['equal'] = $value; case 'list': case 'multilist': if ($parent && in_array($field, array($parent . '_State', $parent . '_Country'))) { $fieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($filterItem['sid']); if ($field == $parent . '_State') { $listValues = SJB_StatesManager::getHashedListItems($fieldInfo['display_as']); } elseif ($field == $parent . '_Country') { $listValues = SJB_CountriesManager::getHashedListItems($fieldInfo['display_as']); } } else { $listingFieldListItemManager = SJB_ObjectMother::createListingFieldListItemManager(); $listValues = $listingFieldListItemManager->getHashedListItemsByFieldSID($filterItem['sid']); } foreach ($listValues as $id => $val) { if (strtolower($val) == strtolower($value)) { $value = $id; } } if ($filterItem['type'] == 'multilist') { $res[$field]['multi_like'][] = $value; } else { $res[$field]['equal'] = $value; } break; } } $res['active']['equal'] = 1; if (!empty($this->listing_type_id)) { $listing_type_sid = SJB_ListingTypeManager::getListingTypeSIDByID($this->listing_type_id); if (!$listing_type_sid) { trigger_error("Can't set filter by listing type for unknown type: '" . $this->listing_type_id . "'.", E_USER_WARNING); } $res['listing_type_sid']['equal'] = $listing_type_sid; if (SJB_ListingTypeManager::getWaitApproveSettingByListingType($listing_type_sid)) { $res['status']['equal'] = 'approved'; } } return $res; }
public function execute() { $ajaxAction = SJB_Request::getVar('ajax_action', '', 'GET'); $formToken = SJB_Request::getVar('form_token', ''); // save token date in session. In some code we needs to get list of it, and clean old tokens data from // session. self::setTokenDateToSession($formToken); switch ($ajaxAction) { // UPLOAD USER PROFILE VIDEO case 'upload_profile_video': case 'upload_profile_logo': $uploadedFieldId = SJB_Request::getVar('uploaded_field_name', '', 'GET'); // get field by user group return not all fields of profile. // but now we use getAllFieldsInfo() to check fields $userProfileFields = SJB_UserProfileFieldManager::getAllFieldsInfo(); $fieldSid = null; foreach ($userProfileFields as $field) { if ($field['id'] != $uploadedFieldId) { continue; } $fieldSid = $field['sid']; } if ($fieldSid == null) { echo "Wrong profile field specified"; exit; } $fieldInfo = SJB_UserProfileFieldManager::getFieldInfoBySID($fieldSid); $tp = SJB_System::getTemplateProcessor(); $validation = $this->validationManager($fieldInfo, $tp, $uploadedFieldId); if ($validation === true) { // video file already uploaded after isValid checks // but for 'Logo' - we need some actions to make save picture if ($fieldInfo['type'] == 'logo') { $upload_manager = new SJB_UploadPictureManager(); $upload_manager->setUploadedFileID($this->fileUniqueId); $upload_manager->setHeight($fieldInfo['height']); $upload_manager->setWidth($fieldInfo['width']); $upload_manager->uploadPicture($fieldInfo['id'], $fieldInfo); // and set value of file id to property $this->property->setValue($this->fileUniqueId); $this->propertyValue = $this->property->getValue(); } // set uploaded video to temporary value if ($fieldInfo['type'] == 'video' && isset($this->propertyValue['file_id'])) { $uploadedID = $this->propertyValue['file_id']; // rename it to unique value SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $this->fileUniqueId, $uploadedID); // fill session data for tmp storage $fieldValue = array('file_id' => $this->fileUniqueId, 'file_url' => $this->propertyValue['file_url'], 'file_name' => $this->propertyValue['file_name'], 'saved_file_name' => $this->propertyValue['saved_file_name']); $tmpUploadsStorage = SJB_Session::getValue('tmp_uploads_storage'); $tmpUploadsStorage = SJB_Array::setPathValue($tmpUploadsStorage, "{$formToken}/{$uploadedFieldId}", $fieldValue); SJB_Session::setValue('tmp_uploads_storage', $tmpUploadsStorage); } elseif ($fieldInfo['type'] == 'logo') { // for Logo - we already have file_url data and file_thumb data, without file_id // just add this to session storage // fill session data for tmp storage $fieldValue = array('file_id' => $this->fileUniqueId, 'file_url' => $this->propertyValue['file_url'], 'file_name' => $this->propertyValue['file_name'], 'thumb_file_url' => $this->propertyValue['thumb_file_url'], 'thumb_file_name' => $this->propertyValue['thumb_file_name']); $tmpUploadsStorage = SJB_Session::getValue('tmp_uploads_storage'); $tmpUploadsStorage = SJB_Array::setPathValue($tmpUploadsStorage, "{$formToken}/{$uploadedFieldId}", $fieldValue); SJB_Session::setValue('tmp_uploads_storage', $tmpUploadsStorage); } $tp->assign(array('id' => $uploadedFieldId, 'value' => $fieldValue)); } $template = ''; switch ($fieldInfo['type']) { case 'video': $template = '../field_types/input/video_profile.tpl'; break; case 'logo': $template = '../field_types/input/logo.tpl'; break; default: break; } $tp->assign('form_token', $formToken); $tp->assign('errors', $this->errors); $tp->display($template); break; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 'delete_profile_video': case 'delete_profile_logo': $userSid = SJB_Request::getVar('user_sid', null); if (empty($userSid)) { $userInfo = SJB_UserManager::getCurrentUserInfo(); } else { $userInfo = SJB_UserManager::getUserInfoBySID($userSid); } $fieldId = SJB_Request::getVar('field_id', null); // check session value $sessionFileStorage = SJB_Session::getValue('tmp_uploads_storage'); $sessionFileId = SJB_Array::getPath($sessionFileStorage, "{$formToken}/{$fieldId}/file_id"); if (is_null($fieldId)) { $this->errors['PARAMETERS_MISSED'] = 1; } elseif (!empty($userInfo) && !isset($userInfo[$fieldId]) && empty($sessionFileId)) { echo json_encode(array('result' => 'success')); exit; } else { if (!empty($userInfo)) { $uploaded_file_id = $userInfo[$fieldId]; SJB_UploadFileManager::deleteUploadedFileByID($uploaded_file_id); } if (!empty($sessionFileId)) { $formFileId = SJB_Request::getVar('file_id'); if ($sessionFileId == $formFileId) { SJB_UploadFileManager::deleteUploadedFileByID($formFileId); $sessionFileStorage = SJB_Array::unsetValueByPath($sessionFileStorage, "{$formToken}/{$fieldId}"); SJB_Session::setValue('tmp_uploads_storage', $sessionFileStorage); } } } if (empty($this->errors)) { echo json_encode(array('result' => 'success')); } else { echo json_encode(array('result' => 'error', 'errors' => $this->errors)); } exit; break; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // UPLOAD LISTIG FILES //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // UPLOAD LISTIG FILES case 'upload_classifieds_video': case 'upload_file': $uploadedFieldId = SJB_Request::getVar('uploaded_field_name', '', 'GET'); // OK. For listings form we have 'listing_id' and optional field (for new listings with temporary id) - listing_type_id $listingId = SJB_Request::getVar('listing_id'); $listingTypeId = SJB_Request::getVar('listing_type_id'); if (empty($listingTypeId)) { $listingInfo = SJB_ListingManager::getListingInfoBySID($listingId); $listingTypeId = SJB_ListingTypeManager::getListingTypeIDBySID($listingInfo['listing_type_sid']); } $listingTypeSid = SJB_ListingTypeManager::getListingTypeSIDByID($listingTypeId); $commonListingFields = SJB_ListingFieldManager::getCommonListingFieldsInfo(); $listingFieldsByType = SJB_ListingFieldManager::getListingFieldsInfoByListingType($listingTypeSid); $listingFields = array_merge($commonListingFields, $listingFieldsByType); $fieldSid = null; foreach ($listingFields as $field) { if ($field['id'] != $uploadedFieldId) { continue; } $fieldSid = $field['sid']; } $fieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($fieldSid); $tp = SJB_System::getTemplateProcessor(); $validation = $this->validationManager($fieldInfo, $tp, $uploadedFieldId); if (!$validation) { $tp->assign(array('listing_id' => $listingId, 'listing' => array('id' => $listingId))); } else { // video file already uploaded after isValid checks // but for 'Logo' - we need some actions to make save picture if ($this->property->getType() == 'file') { if ($_FILES[$uploadedFieldId]['error']) { $this->errors[SJB_UploadFileManager::getErrorId($_FILES[$uploadedFieldId]['error'])] = 1; } $upload_manager = new SJB_UploadFileManager(); $upload_manager->setUploadedFileID($this->fileUniqueId); $upload_manager->setFileGroup('files'); $upload_manager->uploadFile($fieldInfo['id']); // and set value of file id to property $this->property->setValue($this->fileUniqueId); } $this->propertyValue = $this->property->getValue(); // set uploaded video to temporary value if (isset($this->propertyValue['file_id'])) { $uploadedID = $this->propertyValue['file_id']; // rename it to unique value SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $this->fileUniqueId, $uploadedID); // SET VALUE TO TEMPORARY SESSION STORAGE $tmpUploadsStorage = SJB_Session::getValue('tmp_uploads_storage'); $fileValue = array('file_id' => $this->fileUniqueId, 'saved_name' => $this->propertyValue['saved_file_name']); $tmpUploadsStorage = SJB_Array::setPathValue($tmpUploadsStorage, "{$formToken}/{$uploadedFieldId}", $fileValue); SJB_Session::setValue('tmp_uploads_storage', $tmpUploadsStorage); // update listing property $listingInfo = SJB_ListingManager::getListingInfoBySID($listingId); $listing = isset($listingInfo['listing_type_sid']) ? new SJB_Listing($listingInfo, $listingInfo['listing_type_sid']) : new SJB_Listing($listingInfo); $listingProperties = $listing->getProperties(); $propertyInfo = array('id' => $uploadedFieldId, 'type' => 'string', 'value' => $this->fileUniqueId, 'is_system' => true); foreach ($listingProperties as $property) { if ($property->getID() == $uploadedFieldId) { $listing->addProperty($propertyInfo); } } $listing->setSID($listingId); SJB_ListingManager::saveListing($listing); $tp->assign(array('id' => $uploadedFieldId, 'value' => array('file_url' => $this->propertyValue['file_url'], 'file_name' => $this->propertyValue['file_name'], 'saved_file_name' => $this->propertyValue['saved_file_name'], 'file_id' => $this->fileUniqueId), 'listing_id' => $listingId, 'listing' => array('id' => $listingId))); } } switch ($this->property->getType()) { case 'video': $template = '../field_types/input/video.tpl'; break; case 'file': $template = '../field_types/input/file.tpl'; break; default: $template = '../field_types/input/video.tpl'; break; } $tp->assign('errors', $this->errors); $tp->assign('form_token', $formToken); $tp->display($template); self::cleanOldTokensFromSession(); break; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 'delete_classifieds_video': case 'delete_file': $listingId = SJB_Request::getVar('listing_id', null); $fieldId = SJB_Request::getVar('field_id', null); $formFileId = SJB_Request::getVar('file_id'); $this->errors = array(); // check session value $sessionFileStorage = SJB_Session::getValue('tmp_uploads_storage'); $sessionFileId = SJB_Array::getPath($sessionFileStorage, "{$formToken}/{$fieldId}/file_id"); // if empty listing id - check end empty temporary storage if (strlen($listingId) == strlen(time())) { if ($sessionFileId == $formFileId) { SJB_UploadFileManager::deleteUploadedFileByID($formFileId); // remove field from temporary storage if (!is_null($sessionFileStorage)) { $sessionFileStorage = SJB_Array::unsetValueByPath($sessionFileStorage, "{$formToken}/{$fieldId}"); SJB_Session::setValue('tmp_uploads_storage', $sessionFileStorage); } } } else { // we change existing listing $listingInfo = SJB_ListingManager::getListingInfoBySID($listingId); if ((is_null($listingInfo) || !isset($listingInfo[$fieldId])) && empty($sessionFileId)) { $this->errors['WRONG_PARAMETERS_SPECIFIED'] = 1; } else { if (!$this->isOwner($listingId)) { $this->errors['NOT_OWNER'] = 1; } else { $uploadedFileId = $listingInfo[$fieldId]; if (!empty($uploadedFileId)) { SJB_UploadFileManager::deleteUploadedFileByID($uploadedFileId); } SJB_UploadFileManager::deleteUploadedFileByID($formFileId); $listingInfo[$fieldId] = ''; $listing = isset($listingInfo['listing_type_sid']) ? new SJB_Listing($listingInfo, $listingInfo['listing_type_sid']) : new SJB_Listing($listingInfo); // remove all non-changed properties and save only changed property in listing $props = $listing->getProperties(); foreach ($props as $prop) { if ($prop->getID() !== $fieldId) { $listing->deleteProperty($prop->getID()); } } $listing->setSID($listingId); SJB_ListingManager::saveListing($listing); // remove field from temporary storage $sessionFileStorage = SJB_Session::getValue('tmp_uploads_storage'); if (!is_null($sessionFileStorage)) { $sessionFileStorage = SJB_Array::unsetValueByPath($sessionFileStorage, "{$formToken}/{$fieldId}"); SJB_Session::setValue('tmp_uploads_storage', $sessionFileStorage); } } } } if (empty($this->errors)) { echo json_encode(array('result' => 'success')); } else { echo json_encode(array('result' => 'error', 'errors' => $this->errors)); } exit; break; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 'get_classifieds_video_data': case 'get_file_field_data': $fieldId = isset($_REQUEST['field_id']) ? $_REQUEST['field_id'] : null; $listingId = SJB_Request::getVar('listing_id'); $filesFromTmpStorage = SJB_Session::getValue('tmp_uploads_storage'); $fileUniqueId = SJB_Array::getPath($filesFromTmpStorage, "{$formToken}/{$fieldId}/file_id"); // if no temporary files uploaded, return empty string if (empty($fileUniqueId)) { return ''; } $tp = SJB_System::getTemplateProcessor(); $upload_manager = new SJB_UploadFileManager(); $fileInfo = array('id' => $fieldId, 'value' => array('file_url' => $upload_manager->getUploadedFileLink($fileUniqueId), 'file_name' => $upload_manager->getUploadedFileName($fileUniqueId), 'saved_file_name' => $upload_manager->getUploadedSavedFileName($fileUniqueId), 'file_id' => $fileUniqueId), 'listing_id' => $listingId, 'listing' => array('id' => $listingId)); $tp->assign($fileInfo); $fieldInfo = SJB_ListingFieldDBManager::getListingFieldInfoByID($fieldId); $fieldType = $fieldInfo['type']; $template = ''; switch ($fieldType) { case 'video': $template = '../field_types/input/video.tpl'; break; case 'file': $template = '../field_types/input/file.tpl'; break; case 'logo': $template = '../field_types/input/logo_listing.tpl'; break; default: break; } $uploadedFilesize = $upload_manager->getUploadedFileSize($fileUniqueId); $filesizeInfo = SJB_HelperFunctions::getFileSizeAndSizeToken($uploadedFilesize); $tp->assign(array('filesize' => $filesizeInfo['filesize'], 'size_token' => $filesizeInfo['size_token'])); $tp->assign("uploadMaxFilesize", SJB_UploadFileManager::getIniUploadMaxFilesize()); $tp->assign('form_token', $formToken); $tp->display($template); break; //////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////// case 'upload_file_complex': case 'upload_classifieds_video_complex': $uploadedFieldId = SJB_Request::getVar('uploaded_field_name', '', 'GET'); list($parentField, $subFieldId, $complexStep) = explode(':', $uploadedFieldId); // OK. For listings form we have 'listing_id' and optional field (for new listings with temporary id) - listing_type_id $listingId = SJB_Request::getVar('listing_id'); $listingTypeId = SJB_Request::getVar('listing_type_id'); if (empty($listingTypeId)) { $listingInfo = SJB_ListingManager::getListingInfoBySID($listingId); $listingTypeId = SJB_ListingTypeManager::getListingTypeIDBySID($listingInfo['listing_type_sid']); } $listingTypeSid = SJB_ListingTypeManager::getListingTypeSIDByID($listingTypeId); $commonListingFields = SJB_ListingFieldManager::getCommonListingFieldsInfo(); $listingFieldsByType = SJB_ListingFieldManager::getListingFieldsInfoByListingType($listingTypeSid); $listingFields = array_merge($commonListingFields, $listingFieldsByType); // check parent field $fieldSid = null; foreach ($listingFields as $field) { if ($field['id'] != $parentField) { continue; } $fieldSid = $field['sid']; } $complexFieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($fieldSid); $subFields = SJB_Array::get($complexFieldInfo, 'fields'); if (empty($subFields)) { echo 'wrong field ID'; exit; } // check field $fieldInfo = ''; foreach ($subFields as $subField) { if ($subField['id'] != $subFieldId) { continue; } $fieldInfo = $subField; } $complexParameters = array('parentField' => $parentField, 'subFieldId' => $subFieldId, 'complexStep' => $complexStep); $tp = SJB_System::getTemplateProcessor(); $validation = $this->validationManager($fieldInfo, $tp, $uploadedFieldId, $complexParameters); $upload_manager = new SJB_UploadFileManager(); $upload_manager->setUploadedFileID($this->fileUniqueId); $upload_manager->setFileGroup('files'); $upload_manager->uploadFile($fieldInfo['id'], $parentField); $this->property->setValue($this->fileUniqueId); $this->propertyValue = $this->property->getPropertyVariablesToAssign(); // set uploaded video to temporary value if ((isset($this->propertyValue['value']['file_id']) || isset($this->propertyValue['value'][$complexStep]['file_id'])) && $validation) { // fix for FILE type in complex field if (isset($this->propertyValue['value'][$complexStep]['file_id'])) { $this->propertyValue['value'] = $this->propertyValue['value'][$complexStep]; } $filesInfo = array($complexStep => $this->propertyValue['value']); $uploadedID = $this->propertyValue['value']['file_id']; // rename it to unique value SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $this->fileUniqueId, $uploadedID); // SET VALUE TO TEMPORARY SESSION STORAGE $tmpUploadsStorage = SJB_Session::getValue('tmp_uploads_storage'); $fileValue = array('file_id' => $this->fileUniqueId, 'saved_name' => $this->propertyValue['value']['saved_file_name']); $tmpUploadsStorage = SJB_Array::setPathValue($tmpUploadsStorage, "{$formToken}/{$uploadedFieldId}", $fileValue); SJB_Session::setValue('tmp_uploads_storage', $tmpUploadsStorage); $tp->assign(array('id' => $subFieldId, 'value' => $this->propertyValue['value']['file_name'], 'filesInfo' => $filesInfo, 'complexField' => $parentField, 'complexStep' => $complexStep, 'listing_id' => $listingId, 'listing' => array('id' => $listingId))); } else { $tp->assign(array('id' => $subFieldId, 'complexField' => $parentField, 'complexStep' => $complexStep, 'listing_id' => $listingId, 'listing' => array('id' => $listingId))); } switch ($this->property->getType()) { case 'video': $template = '../field_types/input/video.tpl'; break; case 'file': case 'complexfile': $template = '../field_types/input/file.tpl'; break; default: $template = '../field_types/input/video.tpl'; break; } $tp->assign('form_token', $formToken); $tp->assign('errors', $this->errors); $tp->display($template); break; //////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////// case 'delete_file_complex': $listingId = SJB_Request::getVar('listing_id', null); $fieldId = SJB_Request::getVar('field_id', null); $formFileId = SJB_Request::getVar('file_id'); $this->errors = array(); // check session value $sessionFileStorage = SJB_Session::getValue('tmp_uploads_storage'); $sessionFileId = SJB_Array::getPath($sessionFileStorage, "{$formToken}/{$fieldId}/file_id"); // if empty listing id - check and empty temporary storage if (strlen($listingId) == strlen(time())) { if ($sessionFileId == $formFileId) { SJB_UploadFileManager::deleteUploadedFileByID($formFileId); // remove field from temporary storage $sessionFileStorage = SJB_Array::unsetValueByPath($sessionFileStorage, "{$formToken}/{$fieldId}"); SJB_Session::setValue('tmp_uploads_storage', $sessionFileStorage); } } else { // we change existing listing $listingInfo = SJB_ListingManager::getListingInfoBySID($listingId); list($complexField, $subField, $complexStep) = explode(':', $fieldId); $fieldValue = SJB_Array::getPath($listingInfo, "{$complexField}/{$subField}/{$complexStep}"); // if field value not present in listing and not present in temporary storage - throw error if ((is_null($listingInfo) || $fieldValue === null) && empty($sessionFileId)) { $this->errors['WRONG_PARAMETERS_SPECIFIED'] = 1; } else { if (!$this->isOwner($listingId)) { $this->errors['NOT_OWNER'] = 1; } else { $uploadedFileId = $fieldValue; if (!empty($uploadedFileId)) { SJB_UploadFileManager::deleteUploadedFileByID($uploadedFileId); } SJB_UploadFileManager::deleteUploadedFileByID($formFileId); $listingInfo = SJB_Array::setPathValue($listingInfo, "{$complexField}/{$subField}/{$complexStep}", ''); $listing = new SJB_Listing($listingInfo, $listingInfo['listing_type_sid']); // remove all non-changed properties and save only changed property in listing $props = $listing->getProperties(); foreach ($props as $prop) { if ($prop->getID() !== $fieldId) { $listing->deleteProperty($prop->getID()); } } $listing->setSID($listingId); SJB_ListingManager::saveListing($listing); // remove field from temporary storage $sessionFileStorage = SJB_Session::getValue('tmp_uploads_storage'); if (!empty($sessionFileStorage)) { $sessionFileStorage = SJB_Array::unsetValueByPath($sessionFileStorage, "{$formToken}/{$fieldId}"); SJB_Session::setValue('tmp_uploads_storage', $sessionFileStorage); } } } } if (empty($this->errors)) { echo json_encode(array('result' => 'success')); } else { echo json_encode(array('result' => 'error', 'errors' => $this->errors)); } exit; break; //////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////// case 'get_complexfile_field_data': $listingId = SJB_Request::getVar('listing_id', null); $fieldId = SJB_Request::getVar('field_id', null); $listingTypeId = SJB_Request::getVar('listing_type_id'); $listingTypeSid = SJB_ListingTypeManager::getListingTypeSIDByID($listingTypeId); $uploadFileManager = new SJB_UploadFileManager(); // replace square brackets in complex field name $fieldId = str_replace("][", ":", $fieldId); $fieldId = str_replace("[", ":", $fieldId); $fieldId = str_replace("]", "", $fieldId); list($parentField, $subFieldId, $complexStep) = explode(':', $fieldId); $filesFromTmpStorage = SJB_Session::getValue('tmp_uploads_storage'); //$fileUniqueId = SJB_Array::getPath($filesFromTmpStorage, "listings/{$listingId}/{$fieldId}/file_id"); $fileUniqueId = SJB_Array::getPath($filesFromTmpStorage, "{$formToken}/{$fieldId}/file_id"); // if no temporary files uploaded, return empty string if (empty($fileUniqueId)) { return ''; } // get list of fields for all listing types $listingTypesInfo = SJB_ListingTypeManager::getAllListingTypesInfo(); $allFields = array(); foreach ($listingTypesInfo as $listingTypeInfo) { $typeFields = SJB_ListingFieldManager::getListingFieldsInfoByListingType($listingTypeInfo['sid']); $allFields = array_merge($allFields, $typeFields); } // NEED TO GET COMPLEX SUBFIELD PROPERTY $commonListingFields = SJB_ListingFieldManager::getCommonListingFieldsInfo(); $listingFieldsByType = $allFields; $listingFields = array_merge($commonListingFields, $listingFieldsByType); // check parent field $fieldSid = null; foreach ($listingFields as $field) { if ($field['id'] != $parentField) { continue; } $fieldSid = $field['sid']; } // parent complex field $complexFieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($fieldSid); $subFields = SJB_Array::get($complexFieldInfo, 'fields'); if (empty($subFields)) { echo 'wrong field ID'; exit; } // check field for subfield $complexSubFieldInfo = ''; foreach ($subFields as $subField) { if ($subField['id'] != $subFieldId) { continue; } $complexSubFieldInfo = $subField; } if (empty($complexSubFieldInfo)) { echo 'Wrong field info'; exit; } // OK. COMPLEX SUBFIELD WE HAVE $complexSubFieldProperty = new SJB_ObjectProperty($complexSubFieldInfo); // complex file fields contents array of values, not just string filename $complexSubFieldProperty->setValue(array($complexStep => $fileUniqueId)); $valueToAssign = $complexSubFieldProperty->getPropertyVariablesToAssign(); $additionalInfo = array('listing_id' => $listingId, 'listing' => array('id' => $listingId), 'complexField' => $parentField, 'complexStep' => $complexStep); $tp = SJB_System::getTemplateProcessor(); $tp->assign($valueToAssign); $tp->assign($additionalInfo); $template = ''; switch ($complexSubFieldProperty->getType()) { case 'complexfile': $template = '../field_types/input/file.tpl'; break; default: break; } $uploadedFilesize = $uploadFileManager->getUploadedFileSize($fileUniqueId); $filesizeInfo = SJB_HelperFunctions::getFileSizeAndSizeToken($uploadedFilesize); $tp->assign(array('filesize' => $filesizeInfo['filesize'], 'size_token' => $filesizeInfo['size_token'])); $tp->assign('form_token', $formToken); $tp->display($template); break; case 'upload_listing_logo': $uploadedFieldId = SJB_Request::getVar('uploaded_field_name', '', 'GET'); $listingSid = SJB_Request::getVar('listing_id', null); $fieldInfo = SJB_ListingFieldDBManager::getListingFieldInfoByID($uploadedFieldId); $tp = SJB_System::getTemplateProcessor(); $validation = $this->validationManager($fieldInfo, $tp, $uploadedFieldId); if ($validation === true) { $upload_manager = new SJB_UploadPictureManager(); $upload_manager->setUploadedFileID($this->fileUniqueId); $upload_manager->setHeight($fieldInfo['height']); $upload_manager->setWidth($fieldInfo['width']); $upload_manager->uploadPicture($fieldInfo['id'], $fieldInfo); // and set value of file id to property $this->property->setValue($this->fileUniqueId); $this->propertyValue = $this->property->getValue(); // for Logo - we already have file_url data and file_thumb data, without file_id // just add this to session storage // fill session data for tmp storage $fieldValue = array('file_id' => $this->fileUniqueId, 'file_url' => $this->propertyValue['file_url'], 'file_name' => $this->propertyValue['file_name'], 'thumb_file_url' => $this->propertyValue['thumb_file_url'], 'thumb_file_name' => $this->propertyValue['thumb_file_name']); $tmpUploadsStorage = SJB_Session::getValue('tmp_uploads_storage'); $tmpUploadsStorage = SJB_Array::setPathValue($tmpUploadsStorage, "{$formToken}/{$uploadedFieldId}", $fieldValue); SJB_Session::setValue('tmp_uploads_storage', $tmpUploadsStorage); $tp->assign(array('id' => $uploadedFieldId, 'value' => $fieldValue)); } $template = '../field_types/input/logo_listing.tpl'; $tp->assign('form_token', $formToken); $tp->assign('errors', $this->errors); $tp->assign('listing_id', $listingSid); $tp->display($template); break; default: echo "Action not defined!"; break; } exit; }
private function getSortedResults($values) { if (!empty($values)) { $fieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($this->field['sid']); if (SJB_Array::get($fieldInfo, 'sort_by_alphabet') > 0) { $i18n = SJB_I18N::getInstance(); $parents = array(); // in this place we have 'caption' with ids of children items, like '300,301,302,305' etc. // need to get real caption value (for children and parent) and sort by it foreach ($values as $parent => $items) { if (!is_array($items)) { $items = array(); } $sids = array_keys($items); $parentSid = SJB_ListingFieldTreeManager::getParentSID($parent); $parentInfo = SJB_ListingFieldTreeManager::getTreeItemInfoBySID($parentSid); $parents[] = $i18n->gettext('', $parentInfo['caption']); // sort children by alphabet $children = array(); foreach ($sids as $sid) { $info = SJB_ListingFieldTreeManager::getTreeItemInfoBySID($sid); $children[] = $i18n->gettext('', $info['caption']); } array_multisort($children, SORT_STRING, $sids); $sids = array_fill_keys($sids, 1); // set to sorted sids $values[$parent] = $sids; } // sort parent by alphabet $keys = array_keys($values); array_multisort($parents, SORT_ASC, SORT_STRING, $keys, $values); $values = array_combine($keys, $values); } } return $values; }
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(); if (isset($_REQUEST['listing_type_id'])) { $listing_type_id = $_REQUEST['listing_type_id']; SJB_Session::setValue('listing_type_id', $listing_type_id); } elseif (isset($_REQUEST['restore'])) { $listing_type_id = SJB_Session::getValue('listing_type_id'); } else { SJB_Session::setValue('listing_type_id', null); } $listing_type_sid = 0; if (!empty($listing_type_id)) { $listing_type_sid = SJB_ListingTypeManager::getListingTypeSIDByID($listing_type_id); } if (!isset($_REQUEST['listing_type']['equal']) && isset($listing_type_id)) { $_REQUEST['listing_type']['equal'] = $listing_type_id; } if (isset($_REQUEST['searchId'])) { $criteria_saver = new SJB_ListingCriteriaSaver($_REQUEST['searchId']); $_REQUEST = array_merge($_REQUEST, $criteria_saver->getCriteria()); } $empty_listing = new SJB_Listing(array(), $listing_type_sid); $empty_listing->addIDProperty(); $empty_listing->addActivationDateProperty(); $empty_listing->addUsernameProperty(); $empty_listing->addKeywordsProperty(); $empty_listing->addPicturesProperty(); $empty_listing->addListingTypeIDProperty(); $empty_listing->addPostedWithinProperty(); $search_form_builder = new SJB_SearchFormBuilder($empty_listing); $criteria = SJB_SearchFormBuilder::extractCriteriaFromRequestData($_REQUEST); $properties = $empty_listing->getProperties(); foreach ($properties as $propertyName => $property) { if ($property->getType() == 'location') { $propertyInfo = $property->type->property_info; if ($propertyInfo['enable_search_by_radius'] == 1) { if (!isset($criteria['system'][$propertyName])) { $value = array('value' => '', 'radius' => '10'); $criterion = SJB_SearchCriterion::getCriterionByType('location'); $criterion->setProperty($property); $criterion->setPropertyName($propertyName); $criterion->setValue($value); $criteria['system'][$propertyName][] = $criterion; } } } } $search_form_builder->setCriteria($criteria); $search_form_builder->registerTags($tp); $form_fields = $search_form_builder->getFormFieldsInfo(); $metaDataProvider = SJB_ObjectMother::getMetaDataProvider(); $template = SJB_Request::getVar('form_template', 'search_form.tpl'); $formBuilder = SJB_FormBuilderManager::getFormBuilder(SJB_FormBuilderManager::FORM_BUILDER_TYPE_SEARCH, $listing_type_id); $formBuilder->setChargedTemplateProcessor($tp); if ($template == 'quick_search.tpl') { $fieldSID = SJB_ListingFieldManager::getListingFieldSIDByID('Location'); if ($fieldSID) { $fields = SJB_ListingFieldManager::getFieldInfoBySID($fieldSID); if (!empty($fields['fields'])) { foreach ($fields['fields'] as $field) { $form_fields[$fields['id'] . '_' . $field['id']] = $field; } } $tp->assign('locationFields', array($fields)); } } $tp->assign('form_fields', $form_fields); $tp->assign('METADATA', array('form_fields' => $metaDataProvider->getFormFieldsMetadata($form_fields))); $tp->display($template); }
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 function execute() { $field_sid = SJB_Request::getVar('field_sid', null); $field_info = SJB_ListingComplexFieldManager::getFieldInfoBySID($field_sid); $node_sid = SJB_Request::getVar('node_sid', 0); $action = SJB_Request::getVar('action'); if (empty($field_info)) { $errors['INVALID_FIELD_SID'] = 1; } else { if ($action == '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_ListingComplexFieldManager::addTreeItemToBeginByParentSID($field_sid, $node_sid, $tree_item_value); } elseif ($order == 'end') { SJB_ListingComplexFieldManager::addTreeItemToEndByParentSID($field_sid, $node_sid, $tree_item_value); } elseif ($order == 'after') { $after_tree_item_sid = $_REQUEST['after_tree_item_sid']; SJB_ListingComplexFieldManager::addTreeItemAfterByParentSID($field_sid, $node_sid, $tree_item_value, $after_tree_item_sid); } } } elseif ($action == 'save') { $tree_item_value = $_REQUEST['tree_item_value']; if (empty($tree_item_value)) { $field_errors['Value'] = 'EMPTY_VALUE'; } else { SJB_ListingComplexFieldManager::updateTreeItemBySID($node_sid, $tree_item_value); $order = isset($_REQUEST['order']) ? $_REQUEST['order'] : null; if ($order == 'begin') { SJB_ListingComplexFieldManager::moveTreeItemToBeginBySID($node_sid); } elseif ($order == 'end') { SJB_ListingComplexFieldManager::moveTreeItemToEndBySID($node_sid); } elseif ($order == 'after') { $after_tree_item_sid = $_REQUEST['after_tree_item_sid']; SJB_ListingComplexFieldManager::moveTreeItemAfterBySID($node_sid, $after_tree_item_sid); } } } elseif ($action == 'delete') { $item_sid = SJB_Request::getVar('item_sid'); if (is_array($item_sid)) { foreach ($item_sid as $sid => $val) { SJB_ListingComplexFieldManager::deleteTreeItemBySID($sid); } } else { SJB_ListingComplexFieldManager::deleteTreeItemBySID($item_sid); } } elseif ($action == 'move_up') { $item_sid = SJB_Request::getVar('item_sid'); SJB_ListingComplexFieldManager::moveUpTreeItem($item_sid); } elseif ($action == 'move_down') { $item_sid = SJB_Request::getVar('item_sid'); SJB_ListingComplexFieldManager::moveDownTreeItem($item_sid); } elseif ($action == 'save_order') { $item_order = SJB_Request::getVar('item_order'); SJB_ListingComplexFieldManager::saveNewTreeItemsOrder($item_order); } $tree_items = SJB_ListingComplexFieldManager::getTreeValuesByParentSID($field_sid, $node_sid); $parent_sid = SJB_ListingComplexFieldManager::getTreeParentSID($node_sid); $tree_parent_items = SJB_ListingComplexFieldManager::getTreeValuesByParentSID($field_sid, $parent_sid); } $tp = SJB_System::getTemplateProcessor(); $listing_field = SJB_ListingComplexFieldManager::getFieldInfoBySID($field_sid); $listing_field_info = SJB_ListingFieldManager::getFieldInfoBySID($listing_field['field_sid']); $tp->assign("field_sid", $field_sid); $tp->assign("listing_field_info", $listing_field_info); $tp->assign("listing_type_sid", $listing_field_info['listing_type_sid']); $tp->assign("listing_type_info", SJB_ListingTypeManager::getListingTypeInfoBySID($listing_field_info['listing_type_sid'])); $tp->assign("node_sid", $node_sid); $tp->assign("field_info", $field_info); $tp->assign("tree_parent_items", $tree_parent_items); $tp->assign("tree_items", $tree_items); $node_info = SJB_ListingComplexFieldManager::getTreeItemInfoBySID($node_sid); $node_path = SJB_ListingComplexFieldManager::getTreeNodePath($node_sid); $node_path[0] = array('caption' => 'Root', 'sid' => 0); $node_info['node_path'] = $node_path; $tp->assign("node_info", $node_info); $current_level = isset($node_info['level']) ? $node_info['level'] : 0; $tp->assign("current_level", $current_level); $tp->assign("complex", 1); $tp->assign("errors", isset($errors) ? $errors : null); $tp->assign("field_errors", isset($field_errors) ? $field_errors : null); $tp->display("edit_tree.tpl"); }
private static function changeComplexFileProperties(&$exportProperties, &$exportData, $file_type) { $file_properties_info = SJB_ListingComplexFieldManager::getFieldsInfoByType($file_type); foreach ($file_properties_info as $property_info) { $parent_property_info = SJB_ListingFieldManager::getFieldInfoBySID($property_info['field_sid']); if (isset($exportProperties[$parent_property_info['id']])) { // listings walkthrough foreach ($exportData as $listing_sid => $property) { $listing_info = SJB_ListingManager::getListingInfoBySID($listing_sid); if (!isset($listing_info[$parent_property_info['id']][$property_info['id']]) || !is_array($listing_info[$parent_property_info['id']])) { continue; } $file_values = $listing_info[$parent_property_info['id']][$property_info['id']]; if (!empty($file_values)) { foreach ($file_values as $file_value) { if ($file_value) { $file_name = SJB_UploadFileManager::getUploadedSavedFileName($file_value); $file_group = SJB_UploadFileManager::getUploadedFileGroup($file_value); $file_path = SJB_ExportController::_getUploadedFileURL($file_name, $file_group); $file_export_path = SJB_ExportController::_getFileExportURL($file_name, $file_group, $listing_sid, $file_name); @copy($file_path, $file_export_path); } } } } } } }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $action = SJB_Request::getVar('action', 'list'); $fieldSID = SJB_Request::getVar('field_sid', false); $errors = null; if ($fieldSID) { $tp->assign('field_sid', $fieldSID); $field_info = SJB_ListingFieldManager::getFieldInfoBySID($fieldSID); $listing_type_info = SJB_ListingTypeManager::getListingTypeInfoBySID($field_info['listing_type_sid']); $tp->assign("field_info", $field_info); $tp->assign("type_info", $listing_type_info); $tp->assign("type_sid", isset($listing_type_info['sid']) ? $listing_type_info['sid'] : false); switch ($action) { case 'add': $form_is_submitted = SJB_Request::getVar('submit_form', false); $sid = SJB_Request::getVar('sid', false); $request = $_REQUEST; if ($sid) { $listing_field_info = SJB_ListingFieldDBManager::getListingComplexFieldInfoBySID($sid); $request = array_merge($listing_field_info, $request); } $listing_field = new SJB_ListingComplexField($request); if ($sid) { $listing_field->setSID($sid); } $add_listing_field_form = new SJB_Form($listing_field); $add_listing_field_form->registerTags($tp); if ($form_is_submitted && $add_listing_field_form->isDataValid($errors)) { $listing_field->addProperty(array('id' => 'field_sid', 'value' => $fieldSID, 'type' => 'id', 'is_required' => true, 'is_system' => true)); SJB_ListingComplexFieldManager::saveListingField($listing_field); } if (SJB_Request::getVar('apply') == 'no' && empty($errors)) { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings("SITE_URL") . "/edit-listing-field/edit-fields/?field_sid=" . $fieldSID); } $add_listing_field_form->registerTags($tp); $tp->assign("sid", $listing_field->getSID()); $tp->assign("field_type", $listing_field->getFieldType()); $tp->assign("form_fields", $this->getFormFieldsInfo($add_listing_field_form)); $tp->assign("errors", $errors); $tp->assign("action", $action); $tp->display("edit_complex_field.tpl"); break; case 'edit': $listing_field_sid = SJB_Request::getVar('sid', 0); $listing_field_info = SJB_ListingFieldDBManager::getListingComplexFieldInfoBySID($listing_field_sid); $listing_field = new SJB_ListingComplexField($listing_field_info); $add_listing_field_form = new SJB_Form($listing_field); $add_listing_field_form->registerTags($tp); $add_listing_field_form->registerTags($tp); $tp->assign("field_type", $listing_field->getFieldType()); $tp->assign("sid", $listing_field_sid); $tp->assign("form_fields", $this->getFormFieldsInfo($add_listing_field_form)); $tp->assign("errors", $errors); $tp->display("edit_complex_field.tpl"); break; case 'move_up': $fieldSID = SJB_ListingComplexFieldManager::moveUpFieldBySID($fieldSID); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/edit-listing-field/edit-fields/?field_sid=" . $fieldSID); break; case 'move_down': $fieldSID = SJB_ListingComplexFieldManager::moveDownFieldBySID($fieldSID); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/edit-listing-field/edit-fields/?field_sid=" . $fieldSID); break; case 'delete': $listing_field_sid = SJB_Request::getVar('sid', 0); SJB_ListingComplexFieldManager::deleteListingFieldBySID($listing_field_sid); $action = 'list'; break; } if ($action == 'list') { $listing_fields_info = SJB_ListingComplexFieldManager::getListingFieldsInfoByParentSID($fieldSID); $listing_fields = array(); $listing_field_sids = array(); foreach ($listing_fields_info as $listing_field_info) { $listing_field = new SJB_ListingField($listing_field_info); $listing_field->setSID($listing_field_info['sid']); $listing_fields[] = $listing_field; $listing_field_sids[] = $listing_field_info['sid']; } $form_collection = new SJB_FormCollection($listing_fields); $form_collection->registerTags($tp); $tp->assign("listing_field_sids", $listing_field_sids); $tp->display("listing_complex_fields.tpl"); } } }
/** * @param $fieldName * @param $fieldID * @param SJB_SearchResultsTP $stp * @param $userField * @return mixed */ public static function countListingsByFieldName($fieldName, $fieldID, $stp, $userField) { $refineSearchLimit = SJB_Settings::getSettingByName('refine_search_items_limit'); $limit = $refineSearchLimit ? ' LIMIT 0, ' . $refineSearchLimit : ''; $listing = new SJB_Listing(array(), $stp->listing_type_sid); $id_alias_info = $listing->addIDProperty(); $listing->addActivationDateProperty(); $listing->addFeaturedProperty(); $username_alias_info = $listing->addUsernameProperty(); $listing_type_id_info = $listing->addListingTypeIDProperty(); $listing->addCompanyNameProperty(); $requestedCriteria = $stp->criteria_saver->getCriteria(); if (isset($requestedCriteria['PostedWithin']) && $requestedCriteria['PostedWithin']['multi_like'][0] != '') { $within_period = $requestedCriteria['PostedWithin']['multi_like'][0]; $i18n = SJB_I18N::getInstance(); $requestedCriteria['activation_date']['not_less'] = $i18n->getDate(date('Y-m-d', strtotime("- {$within_period} days"))); unset($requestedCriteria['PostedWithin']); } if (isset($requestedCriteria['CompanyName']['multi_like_and'][0])) { $userName = SJB_UserManager::getUserNameByCompanyName($requestedCriteria['CompanyName']['multi_like_and'][0]); unset($requestedCriteria['CompanyName']); if ($userName) { $requestedCriteria['username']['equal'] = $userName; } } $criteria = SJB_SearchFormBuilder::extractCriteriaFromRequestData($requestedCriteria, $listing); $aliases = new SJB_PropertyAliases(); $aliases->addAlias($id_alias_info); $aliases->addAlias($username_alias_info); $aliases->addAlias($listing_type_id_info); $aliases->changeAliasValuesInCriteria($criteria); $sqlTranslator = new SJB_SearchSqlTranslator('listings'); $whereStatement = $sqlTranslator->_getWhereStatement($criteria); $objectSids = implode(',', $stp->found_listings_sids); if ($userField == 1) { $field = SJB_UserProfileFieldManager::getFieldInfoBySID($fieldID); } else { $field = SJB_ListingFieldDBManager::getListingFieldInfoBySID($fieldID); } $result = array(); $cache = SJB_Cache::getInstance(); if (!empty($field['parent_sid'])) { $parentInfo = SJB_ListingFieldManager::getFieldInfoBySID($field['parent_sid']); $fieldName = $parentInfo['id'] . "_" . $fieldName; $field['id'] = $fieldName; $field['parentID'] = $parentInfo['id']; } switch ($field['type']) { case 'list': case 'multilist': if ($userField == 1) { $query = "SELECT up.`{$fieldName}` as caption, count(`listings`.`sid`) as count\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t FROM `listings`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t INNER JOIN `users` `up` ON `listings`.`user_sid` = `up`.`sid`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {$whereStatement}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t AND up.`{$fieldName}` != ''\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t GROUP BY `up`.`{$fieldName}` ORDER BY count DESC"; if (!($result = $cache->load(md5($query)))) { $result = SJB_DB::query($query); $cache->save($result, md5($query), array(SJB_Cache::TAG_LISTINGS, SJB_Cache::TAG_USERS)); } } else { $query = "SELECT `{$fieldName}` as caption, count(`{$fieldName}`) as count FROM `listings` {$whereStatement} AND `{$fieldName}` != '' GROUP BY `{$fieldName}` ORDER BY count DESC"; if (!($result = $cache->load(md5($query)))) { $result = SJB_DB::query($query); $cache->save($result, md5($query), array(SJB_Cache::TAG_LISTINGS)); } } self::breakMultiCategory($result); $newResult = array(); $listItem = new SJB_ListingFieldListItemManager(); foreach ($result as $key => $val) { if (!empty($field['parent_sid'])) { $caption = ''; if ($field['id'] == $field['parentID'] . '_State') { $listValues = SJB_StatesManager::getStatesNamesByCountry(false, true, $field['display_as']); } else { $listValues = $field['list_values']; } foreach ($listValues as $listValue) { if ($listValue['id'] == $val['caption']) { $caption = $listValue['caption']; break; } } } else { $itemInfo = $listItem->getListItemBySID($val['caption']); $caption = $itemInfo ? $itemInfo->getValue() : null; } if ($caption != null) { $newResult[$key]['count'] = $val['count']; $newResult[$key]['value'] = $caption; $newResult[$key]['sid'] = $val['caption']; } } arsort($newResult); $result = $newResult; if (count($result) > $refineSearchLimit) { $result = array_slice($result, 0, $refineSearchLimit); } break; case 'tree': $query = "SELECT `lt`.`sid` as `sid`, `lt`.`caption` as `value`, count(`listings`.`sid`) as `count`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFROM `listings`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tLEFT JOIN `listing_field_tree` `lt` ON `lt`.`field_sid` = {$field['sid']} AND find_in_set(`lt`.`sid`, `listings`.`{$fieldName}`)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{$whereStatement} GROUP BY `lt`.`sid` having `lt`.`sid` IS NOT NULL ORDER BY `count` DESC {$limit}"; if (!($propertyValue = $cache->load(md5($query)))) { $propertyValue = SJB_DB::query($query); $cache->save($propertyValue, md5($query), array(SJB_Cache::TAG_LISTINGS, SJB_Cache::TAG_FIELDS)); } foreach ($propertyValue as $value) { $result[$value['sid']] = $value; } break; default: if ($userField == 1) { $companyColumn = "up.`{$fieldName}`"; $query = "SELECT {$companyColumn} as `value`, count(listings.`sid`) as `count`\n\t\t\t\t\t\t\t\t\t\t\t FROM `listings`\n\t\t\t\t\t\t\t\t\t\t\t INNER JOIN `users` `up` ON `listings`.`user_sid` = `up`.`sid`\n\t\t\t\t\t\t\t\t\t\t\t {$whereStatement}\n\t\t\t\t\t\t\t\t\t\t\t GROUP BY {$companyColumn} ORDER BY `count` DESC {$limit}"; if (!($result = $cache->load(md5($query)))) { $result = SJB_DB::query($query); $cache->save($result, md5($query), array(SJB_Cache::TAG_LISTINGS, SJB_Cache::TAG_USERS)); } } else { if ($field['type'] == 'complex') { $query = "SELECT `value`, count(`value`) as count FROM `listings_properties` WHERE `id`='{$fieldName}' AND `value` != '' AND `object_sid` in ({$objectSids}) GROUP BY `value` ORDER BY count DESC {$limit}"; } else { $query = "SELECT `{$fieldName}` as value, count(`{$fieldName}`) as count FROM `listings` {$whereStatement} AND `{$fieldName}` != '' GROUP BY `{$fieldName}` ORDER BY count DESC {$limit}"; } if (!($result = $cache->load(md5($query)))) { $result = SJB_DB::query($query); $cache->save($result, md5($query), array(SJB_Cache::TAG_LISTINGS)); } } break; } $returnArr['caption'] = $field['caption']; $returnArr['values'] = $result; return $returnArr; }