public function execute() { $template_processor = SJB_System::getTemplateProcessor(); $errors = array(); $UserProfileFieldListItemManager = new SJB_UserProfileFieldListItemManager(); 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 = $UserProfileFieldListItemManager->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); if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'save') { $list_item->setValue($_REQUEST['list_item_value']); if (empty($_REQUEST['list_item_value'])) { $errors = array('Value' => 'EMPTY_VALUE'); } else { $UserProfileFieldListItemManager->saveListItem($list_item); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/edit-user-profile-field/edit-list/?field_sid=" . $_REQUEST['field_sid']); } } $user_profile_field = SJB_UserProfileFieldManager::getFieldBySID($_REQUEST['field_sid']); $user_profile_field_info = SJB_UserProfileFieldManager::getFieldInfoBySID($_REQUEST['field_sid']); $template_processor->assign("user_profile_field_info", $user_profile_field_info); $template_processor->assign("user_group_sid", $user_profile_field->getUserGroupSID()); $template_processor->assign("user_profile_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("user_group_info", SJB_UserGroupManager::getUserGroupInfoBySID($user_profile_field->getUserGroupSID())); $template_processor->display("user_profile_list_item_editing.tpl"); } } }
public static function getUserProfileFieldIDBySID($user_profile_field_sid) { $user_profile_field_info = SJB_UserProfileFieldManager::getFieldInfoBySID($user_profile_field_sid); if (empty($user_profile_field_info)) { return null; } return $user_profile_field_info['id']; }
public function execute() { $user_profile_field_sid = SJB_Request::getVar('sid', null); if (!is_null($user_profile_field_sid)) { $user_profile_field_info = SJB_UserProfileFieldManager::getFieldInfoBySID($user_profile_field_sid); SJB_UserProfileFieldManager::deleteUserProfileFieldBySID($user_profile_field_sid); $user_group_sid = $user_profile_field_info['user_group_sid']; SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/edit-user-profile/?user_group_sid=' . $user_group_sid); } else { echo 'The system cannot proceed as User Group SID is not set'; } }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $user_field_sid = SJB_Request::getVar('user_field_sid', null); $errors = array(); if (!is_null($user_field_sid)) { $profile_field = SJB_UserProfileFieldManager::getFieldInfoBySID($user_field_sid); $profile_field['user_group'] = SJB_UserGroupManager::getUserGroupIDBySID($profile_field['user_group_sid']); $tp->assign('fieldInfo', $profile_field); } else { $errors[] = 'The system cannot proceed as some required parameters are not set'; } $tp->assign('errors', $errors); $tp->display('instruction_user_profile_field.tpl'); }
function getData($values = array()) { $listFieldsInfo = SJB_UserProfileFieldManager::getFieldsInfoByType('list'); $multilistFieldsInfo = SJB_UserProfileFieldManager::getFieldsInfoByType('multilist'); $fieldsInfo = array_merge($listFieldsInfo, $multilistFieldsInfo); foreach ($fieldsInfo as $key => $fieldInfo) { if ($fieldInfo['user_group_sid'] == $this->user_group && 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_UserProfileFieldManager::getFieldInfoBySID($fieldsInfo[$property_name]['sid']); 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 { $result[$property_name] = isset($values[$key]) ? $values[$key] : null; } } $result = $result + $this->_getTreeValues($values); return $result; }
private static function changeListProperties(&$export_data) { $listFieldsInfo = SJB_UserProfileFieldManager::getFieldsInfoByType('list'); $multilistFieldsInfo = SJB_UserProfileFieldManager::getFieldsInfoByType('multilist'); $fieldsInfo = array_merge($listFieldsInfo, $multilistFieldsInfo); foreach ($export_data as $user_sid => $property) { $userGroupSID = (int) SJB_UserGroupManager::getUserGroupSIDByName(SJB_Array::get($property[self::USER_OPTIONS_INDEX], 'user_group_id')); foreach ($fieldsInfo as $field_info) { $fieldID = SJB_Array::get($field_info, 'id'); $fieldUserGroupSID = (int) SJB_Array::get($field_info, 'user_group_sid'); if ($fieldUserGroupSID === $userGroupSID && !empty($property[$fieldID])) { $fieldInfo = SJB_UserProfileFieldManager::getFieldInfoBySID($field_info['sid']); switch ($fieldInfo['type']) { case 'list': foreach ($fieldInfo['list_values'] as $listValues) { if ($listValues['id'] == $property[$field_info['id']]) { $export_data[$user_sid][$field_info['id']] = $listValues['caption']; break; } } break; case 'multilist': $multilistValues = explode(',', $property[$field_info['id']]); $multilistDisplayValues = array(); foreach ($fieldInfo['list_values'] as $listValues) { if (in_array($listValues['id'], $multilistValues)) { $multilistDisplayValues[] = $listValues['caption']; } } $export_data[$user_sid][$field_info['id']] = implode(',', $multilistDisplayValues); break; } } } } }
public function execute() { $field_sid = isset($_REQUEST['field_sid']) ? $_REQUEST['field_sid'] : null; $field_info = SJB_UserProfileFieldManager::getFieldInfoBySID($field_sid); $node_sid = isset($_REQUEST['node_sid']) ? $_REQUEST['node_sid'] : 0; $user_group_sid = isset($_REQUEST['user_group_sid']) ? $_REQUEST['user_group_sid'] : null; $user_group_info = SJB_UserGroupManager::getUserGroupInfoBySID($user_group_sid); if (empty($field_info)) { $errors['INVALID_FIELD_SID'] = 1; } else { if (isset($_REQUEST['action']) && $_REQUEST['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_UserProfileFieldManager::addTreeItemToBeginByParentSID($field_sid, $node_sid, $tree_item_value); } elseif ($order == 'end') { SJB_UserProfileFieldManager::addTreeItemToEndByParentSID($field_sid, $node_sid, $tree_item_value); } elseif ($order == 'after') { $after_tree_item_sid = $_REQUEST['after_tree_item_sid']; SJB_UserProfileFieldManager::addTreeItemAfterByParentSID($field_sid, $node_sid, $tree_item_value, $after_tree_item_sid); } $treeLevelsNumber = SJB_UserProfileFieldTreeManager::getTreeDepthBySID($field_sid); SJB_UserProfileFieldManager::addLevelField($treeLevelsNumber); } } elseif (isset($_REQUEST['action']) && $_REQUEST['action'] == 'save') { $tree_item_value = $_REQUEST['tree_item_value']; if (empty($tree_item_value)) { $field_errors['Value'] = 'EMPTY_VALUE'; } else { SJB_UserProfileFieldManager::updateTreeItemBySID($node_sid, $tree_item_value); $order = isset($_REQUEST['order']) ? $_REQUEST['order'] : null; if ($order == 'begin') { SJB_UserProfileFieldManager::moveTreeItemToBeginBySID($node_sid); } elseif ($order == 'end') { SJB_UserProfileFieldManager::moveTreeItemToEndBySID($node_sid); } elseif ($order == 'after') { $after_tree_item_sid = $_REQUEST['after_tree_item_sid']; SJB_UserProfileFieldManager::moveTreeItemAfterBySID($node_sid, $after_tree_item_sid); } } } elseif (isset($_REQUEST['action']) && $_REQUEST['action'] == 'delete') { $item_sid = isset($_REQUEST['item_sid']) ? $_REQUEST['item_sid'] : null; SJB_UserProfileFieldManager::deleteTreeItemBySID($item_sid); } elseif (isset($_REQUEST['action']) && $_REQUEST['action'] == 'move_up') { $item_sid = isset($_REQUEST['item_sid']) ? $_REQUEST['item_sid'] : null; SJB_UserProfileFieldManager::moveUpTreeItem($item_sid); } elseif (isset($_REQUEST['action']) && $_REQUEST['action'] == 'move_down') { $item_sid = isset($_REQUEST['item_sid']) ? $_REQUEST['item_sid'] : null; SJB_UserProfileFieldManager::moveDownTreeItem($item_sid); } elseif (isset($_REQUEST['action']) && $_REQUEST['action'] == '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_UserProfileFieldTreeManager::addMultupleTreeItem($item_sid, $node_sid, $tree_item_value, $order, $after_tree_item_sid); } $tree_items = SJB_UserProfileFieldManager::getTreeValuesByParentSID($field_sid, $node_sid); $parent_sid = SJB_UserProfileFieldManager::getTreeParentSID($node_sid); $tree_parent_items = SJB_UserProfileFieldManager::getTreeValuesByParentSID($field_sid, $parent_sid); } $tp = SJB_System::getTemplateProcessor(); $tp->assign("field_sid", $field_sid); $tp->assign("node_sid", $node_sid); $tp->assign("user_group_sid", $user_group_sid); $tp->assign("user_group_info", $user_group_info); $tp->assign("field_info", $field_info); $tp->assign("tree_parent_items", $tree_parent_items); $tp->assign("tree_items", $tree_items); $node_info = SJB_UserProfileFieldManager::getTreeItemInfoBySID($node_sid); $node_path = SJB_UserProfileFieldManager::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("errors", isset($errors) ? $errors : null); $tp->assign("field_errors", isset($field_errors) ? $field_errors : null); $tp->display("edit_tree.tpl"); }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $user_group_sid = SJB_Request::getVar('user_group_sid', null); $user_group_info = SJB_UserGroupManager::getUserGroupInfoBySID($user_group_sid); $user_profile_field_sid = SJB_Request::getVar('sid', null); if (!is_null($user_profile_field_sid)) { $user_profile_field_info = SJB_UserProfileFieldManager::getFieldInfoBySID($user_profile_field_sid); $user_profile_field_old_id = $user_profile_field_info['id']; $user_profile_field_info = array_merge($user_profile_field_info, $_REQUEST); $user_profile_field = new SJB_UserProfileField($user_profile_field_info); $user_profile_field->setSID($user_profile_field_sid); $user_profile_field->setUserGroupSID($user_group_sid); if (!in_array($user_profile_field->field_type, array('video', 'picture', 'logo', 'file', 'location'))) { $default_value = array('id' => 'default_value', 'sid' => isset($user_profile_field_info['sid']) ? $user_profile_field_info['sid'] : '', 'caption' => 'Default Value', 'value' => isset($user_profile_field_info['default_value']) ? $user_profile_field_info['default_value'] : '', 'type' => $user_profile_field->field_type, 'length' => '', 'is_required' => false, 'is_system' => true); $additionalParameters = array(); switch ($user_profile_field->field_type) { case 'list': if (isset($user_profile_field_info['list_values'])) { $additionalParameters = array('list_values' => $user_profile_field_info['list_values']); } break; case 'multilist': if (isset($user_profile_field_info['list_values'])) { $additionalParameters = array('list_values' => $user_profile_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($user_profile_field_info['tree_values'])) { $additionalParameters = array('tree_values' => $user_profile_field_info['tree_values']); } if (isset($user_profile_field_info['display_as_select_boxes'])) { $additionalParameters['display_as_select_boxes'] = $user_profile_field_info['display_as_select_boxes']; } break; } $default_value = array_merge($default_value, $additionalParameters); $user_profile_field->addProperty($default_value); } if (in_array($user_profile_field->field_type, array('tree', 'multilist', 'list'))) { $sort_by_alphabet = array('id' => 'sort_by_alphabet', 'caption' => 'Sort Values By Alphabet', 'value' => isset($user_profile_field_info['sort_by_alphabet']) ? $user_profile_field_info['sort_by_alphabet'] : '', 'type' => 'boolean', 'lenght' => '', 'is_required' => false, 'is_system' => true); $user_profile_field->addProperty($sort_by_alphabet); } $edit_form = new SJB_Form($user_profile_field); $form_submitted = SJB_Request::getVar('action'); if (in_array($user_profile_field->field_type, array('multilist', 'list'))) { $user_profile_field->addDisplayAsProperty($user_profile_field_info['display_as']); } // infill instructions should be the last element in form // no instructions for tree field type if (!in_array($user_profile_field->getFieldType(), array('complex', 'tree', 'location'))) { if ($form_submitted) { $user_profile_field->addInfillInstructions(SJB_Request::getVar('instructions')); } else { $user_profile_field->addInfillInstructions(isset($user_profile_field_info['instructions']) ? $user_profile_field_info['instructions'] : ''); } } /** * "Display as" options for TREE TYPE */ if ('tree' == $user_profile_field->getFieldType()) { $user_profile_field->addProperty(SJB_TreeType::getDisplayAsDetail(isset($user_profile_field_info['display_as_select_boxes']) ? $user_profile_field_info['display_as_select_boxes'] : '')); $treeLevelsNumber = SJB_UserProfileFieldTreeManager::getTreeDepthBySID($user_profile_field_sid); $tp->assign('tree_levels_number', $treeLevelsNumber); // treee levels captions for ($i = 1; $i <= $treeLevelsNumber; $i++) { $levelID = 'level_' . $i; $user_profile_field->addProperty(array('id' => $levelID, 'caption' => $i . ' Level Name', 'value' => isset($user_profile_field_info[$levelID]) ? $user_profile_field_info[$levelID] : '', 'type' => 'string', 'length' => '250', 'is_required' => false, 'is_system' => true)); } } // end of ""Display as" options for TREE TYPE" $edit_form = new SJB_Form($user_profile_field); $errors = array(); if ($form_submitted && $edit_form->isDataValid($errors)) { SJB_UserProfileFieldManager::saveUserProfileField($user_profile_field); $user_profile_field_new_id = $user_profile_field_info['id']; if ($user_profile_field_old_id != $user_profile_field_new_id) { SJB_UserProfileFieldManager::changeUserPropertyIDs($user_group_sid, $user_profile_field_old_id, $user_profile_field_new_id); } if ($form_submitted == 'save_info') { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/edit-user-profile/?user_group_sid=' . $user_group_sid); } } if ($user_profile_field_info['id'] == 'Location' && empty($errors['ID'])) { $edit_form->makeDisabled('id'); } $edit_form->registerTags($tp); $edit_form->makeDisabled('type'); $tp->assign('user_group_sid', $user_group_sid); $tp->assign('form_fields', $edit_form->getFormFieldsInfo()); $tp->assign('errors', $errors); $tp->assign('field_type', $user_profile_field->getFieldType()); $tp->assign('userTree', true); $tp->assign('user_profile_field_info', $user_profile_field_info); $tp->assign('user_profile_field_sid', $user_profile_field_sid); $tp->assign('user_group_info', $user_group_info); $tp->display('edit_user_profile_field.tpl'); } }
private function extraProperties($user, $userInfo, &$usersID) { $savedProperties = array('user_group' => 1, 'pictures' => 1); foreach ($user->getProperties() as $property) { if (!in_array($property->id, array('file', 'Logo', 'video'))) { $savedProperties[$property->id] = 1; } } $queryFields = ''; foreach (array_diff_key($userInfo, $savedProperties) as $key => $value) { if ($key == 'id') { $usersID[$value] = $user->getSID(); continue; } if ($key == 'product') { $products = $value ? explode(',', $value) : array(); $i = sizeof($products); while (--$i != -1) { $productProperties = @unserialize($products[$i]); if (!$productProperties) { continue; } $productSid = SJB_ProductsManager::getProductSidByName($productProperties['name']); if (!$productSid) { continue; } $contract = new SJB_Contract(array('product_sid' => $productSid, 'numberOfListings' => $productProperties['number_of_listings'])); $contract->setPrice($productProperties['price']); $contract->setCreationDate($productProperties['creation_date']); $contract->setExpiredDate($productProperties['expired_date']); $contract->setStatus($productProperties['status']); $contract->setUserSID($user->getSID()); $contract->saveInDB(); SJB_ContractSQL::updatePostingsNumber($contract->id, $productProperties['number_of_postings']); SJB_ProductsManager::incrementPostingsNumber($productSid, $productProperties['number_of_postings']); } continue; } if (in_array($key, array('file', 'Logo', 'video')) && !empty($value)) { $property = $user->getProperty($key); if (!$property) { continue; } $fileProperties = @unserialize($value); if (!$fileProperties) { continue; } $fieldInfo = SJB_UserProfileFieldManager::getFieldInfoBySID($property->sid); switch ($key) { case 'file': $value = 'Resume_' . $user->getSID(); $this->databaseFileRegister('file', $value, $fileProperties['name'] . '.' . $fileProperties['extension'], $fileProperties['mimeType']); break; case 'Logo': $value = 'Logo_' . $user->getSID(); $this->databaseFileRegister('pictures', $value, $fileProperties['name'] . '.' . $fileProperties['extension'], $fileProperties['mimeType']); $this->databaseFileRegister('pictures', 'Logo_' . $user->getSID() . '_thumb', $fileProperties['name'] . '_thumb.' . $fileProperties['extension'], $fileProperties['mimeType']); break; case 'video': $value = 'video_' . $user->getSID(); $this->databaseFileRegister('video', 'video_' . $user->getSID(), $fileProperties['name'] . '.' . $fileProperties['extension'], $fileProperties['mimeType']); break; } } if ($key == 'registration_date') { $isValid = SJB_UserRegistrationDateValidator::isValid($userInfo['registration_date']); if ($isValid !== true) { if (!isset($errors['registrationDate'])) { $errors['registrationDate'][] = $isValid; } if (isset($userInfo['username'])) { $errors['registrationDate'][] = $userInfo['username'] . ', '; } continue; } } if (!empty($value)) { $queryFields .= $queryFields ? ", `" . SJB_DB::quote($key) . "` = '" . SJB_DB::quote($value) . "'" : "`" . SJB_DB::quote($key) . "` = '" . SJB_DB::quote($value) . "'"; } } if (!empty($queryFields)) { SJB_DB::queryExec("UPDATE ?w SET " . $queryFields . " WHERE `sid` = ?n", 'users', $user->getSID()); } }
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); $userGroupSID = SJB_Request::getVar('user_group_sid', false); $errors = null; if ($fieldSID) { $tp->assign('field_sid', $fieldSID); $fieldInfo = SJB_UserProfileFieldManager::getFieldInfoBySID($fieldSID); $userGroupInfo = SJB_UserGroupManager::getUserGroupInfoBySID($fieldInfo['user_group_sid']); $userGroupSID = isset($userGroupInfo['sid']) ? $userGroupInfo['sid'] : 0; $tp->assign("field_info", $fieldInfo); $tp->assign("group_info", $userGroupInfo); $tp->assign("group_sid", $userGroupSID); switch ($action) { case 'edit': $formSubmitted = SJB_Request::getVar('submit_form', false); $sid = SJB_Request::getVar('sid', false); $userFieldSid = SJB_Request::getVar('sid', 0); $userFieldInfo = SJB_UserProfileFieldDBManager::getUserProfileFieldInfoBySID($userFieldSid); $userFieldInfo = array_merge($userFieldInfo, $_REQUEST); if (!empty($userFieldInfo['default_value_setting']) && $userFieldInfo['default_value_setting'] == 'default_country') { $userFieldInfo['default_value'] = $userFieldInfo['default_value_setting']; } $userField = new SJB_UserProfileField($userFieldInfo); $userField->deleteProperty('type'); $userField->addProperty(array('id' => 'hidden', 'caption' => 'Hidden', 'type' => 'boolean', 'value' => isset($userFieldInfo['hidden']) ? $userFieldInfo['hidden'] : '', 'is_system' => true)); $additionalParameters = array(); if ($userFieldInfo['id'] == 'Country') { $additionalParameters = array('list_values' => SJB_CountriesManager::getAllCountriesCodesAndNames()); $userField->addProperty(array('id' => 'display_as', 'caption' => 'Display Country as', 'type' => 'list', 'value' => isset($userFieldInfo['display_as']) ? $userFieldInfo['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 ($userFieldInfo['id'] == 'State') { $defaultCountry = SJB_UserProfileFieldManager::getDefaultCountryByParentSID($fieldSID); $additionalParameters['list_values'] = SJB_StatesManager::getStatesNamesByCountry($defaultCountry); $additionalParameters['comment'] = !$defaultCountry ? 'Please select default country first to select default State' : ''; $userField->addProperty(array('id' => 'display_as', 'caption' => 'Display State as', 'type' => 'list', 'value' => isset($userFieldInfo['display_as']) ? $userFieldInfo['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)); } $defaultValue = array('id' => 'default_value', 'sid' => isset($userFieldInfo['sid']) ? $userFieldInfo['sid'] : '', 'caption' => 'Default Value', 'value' => isset($userFieldInfo['default_value']) ? $userFieldInfo['default_value'] : '', 'type' => $userField->field_type, 'length' => '', 'is_required' => false, 'is_system' => true); $defaultValue = array_merge($defaultValue, $additionalParameters); $userField->addProperty($defaultValue); if ($formSubmitted) { $userField->addInfillInstructions(SJB_Request::getVar('instructions')); } else { $userField->addInfillInstructions(isset($userFieldInfo['instructions']) ? $userFieldInfo['instructions'] : ''); } $UserFieldForm = new SJB_Form($userField); $UserFieldForm->registerTags($tp); $userField->setSID($sid); $userField->setUserGroupSID($userGroupSID); $addValidParam = array('field' => 'parent_sid', 'value' => $parentSID); if ($formSubmitted && $UserFieldForm->isDataValid($errors, $addValidParam)) { SJB_UserProfileFieldManager::saveUserProfileField($userField); if (SJB_Request::getVar('apply') == 'no' && empty($errors)) { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings("SITE_URL") . "/edit-user-profile-field/edit-location-fields/?field_sid=" . $fieldSID); } } $UserFieldForm->makeDisabled('id'); $tp->assign('profileFieldAsDV', !empty($userFieldInfo['profile_field_as_dv'])); $tp->assign('userFieldInfo', $userFieldInfo); $tp->assign("field_type", $userField->getFieldType()); $tp->assign("sid", $userFieldSid); $tp->assign("form_fields", $UserFieldForm->getFormFieldsInfo()); $tp->assign("errors", $errors); $tp->display("edit_location_field.tpl"); break; case 'move_up': SJB_UserProfileFieldManager::moveUpFieldBySID($fieldSID); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/edit-user-profile-field/edit-location-fields/?field_sid=" . $parentSID); break; case 'move_down': SJB_UserProfileFieldManager::moveDownFieldBySID($fieldSID); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/edit-user-profile-field/edit-location-fields/?field_sid=" . $parentSID); break; } if ($action == 'list') { $userFieldsInfo = SJB_UserProfileFieldManager::getUserProfileFieldsInfoByParentSID($fieldSID); $userFields = array(); $userFieldSids = array(); foreach ($userFieldsInfo as $userFieldInfo) { $userField = new SJB_UserProfileField($userFieldInfo); $userField->addProperty(array('id' => 'hidden', 'caption' => 'Hidden', 'type' => 'boolean', 'value' => isset($userFieldInfo['hidden']) ? $userFieldInfo['hidden'] : '', 'is_system' => true)); $userField->setSID($userFieldInfo['sid']); $userFields[] = $userField; $userFieldSids[] = $userFieldInfo['sid']; } $form_collection = new SJB_FormCollection($userFields); $form_collection->registerTags($tp); $tp->assign("user_field_sids", $userFieldSids); $tp->assign("user_group_sid", $userGroupSID); $tp->display("user_location_fields.tpl"); } } }
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; }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $action = SJB_Request::getVar('action'); $field_id = SJB_Request::getVar('field_id', false); if ($field_id || $action == 'save_setting') { switch ($action) { case 'save': $listing_type_sid = SJB_Request::getVar('listing_type_sid', false); $userField = 0; if ($listing_type_sid) { if (strstr($field_id, 'user_')) { $field_id = str_replace('user_', '', $field_id); $userField = 1; } if (!SJB_RefineSearch::getFieldByFieldSIDListingTypeSID($field_id, $listing_type_sid, $userField)) { SJB_RefineSearch::addField($field_id, $listing_type_sid, $userField); } } break; case 'save_setting': $listing_type_id = SJB_Request::getVar('listing_type_id', false); $refine_search_items_limit = SJB_Request::getVar('refine_search_items_limit', false); if ($listing_type_id) { $settingValue = SJB_Request::getVar('turn_on_refine_search_' . $listing_type_id, 0); if (SJB_Settings::getSettingByName('turn_on_refine_search_' . $listing_type_id) === false) { SJB_Settings::addSetting('turn_on_refine_search_' . $listing_type_id, $settingValue); } else { SJB_Settings::updateSetting('turn_on_refine_search_' . $listing_type_id, $settingValue); } } elseif ($refine_search_items_limit) { if (SJB_Settings::getSettingByName('refine_search_items_limit') === false) { SJB_Settings::addSetting('refine_search_items_limit', $refine_search_items_limit); } else { SJB_Settings::updateSetting('refine_search_items_limit', $refine_search_items_limit); } } break; case 'delete': SJB_RefineSearch::removeField($field_id); break; case 'move_up': $listing_type_sid = SJB_Request::getVar('listing_type_sid', false); if ($listing_type_sid) { SJB_RefineSearch::moveUpFieldBySID($field_id, $listing_type_sid); } break; case 'move_down': $listing_type_sid = SJB_Request::getVar('listing_type_sid', false); if ($listing_type_sid) { SJB_RefineSearch::moveDownFieldBySID($field_id, $listing_type_sid); } break; } } $listingTypes = SJB_ListingTypeManager::getAllListingTypesInfo(); foreach ($listingTypes as $key => $listingType) { $fields = array_merge(SJB_ListingFieldManager::getCommonListingFieldsInfo(), SJB_ListingFieldManager::getListingFieldsInfoByListingType($listingType['sid'])); foreach ($fields as $field_key => $field) { if ($field['type'] == 'location') { if (is_array($field['fields'])) { $fields = array_merge($fields, $field['fields']); } } if (!in_array($field['type'], array('list', 'multilist', 'string', 'boolean', 'tree')) || in_array($field['id'], array('ApplicationSettings', 'access_type', 'anonymous', 'screening_questionnaire'))) { foreach ($fields as $fieldKey => $searchField) { if ($searchField['id'] == $field['id']) { unset($fields[$fieldKey]); } } } } $listingTypes[$key]['fields'] = $fields; if ($key == 'Job') { $userFieldSID = SJB_DB::queryValue("SELECT `sid` FROM `user_profile_fields` WHERE `id` = 'CompanyName'"); if (!empty($userFieldSID)) { $listingTypes[$key]['user_fields'] = SJB_UserProfileFieldManager::getFieldInfoBySID($userFieldSID); } } $listingTypes[$key]['saved_fields'] = SJB_RefineSearch::getFieldsByListingTypeSID($listingType['sid']); $listingTypes[$key]['setting'] = SJB_Settings::getSettingByName('turn_on_refine_search_' . $listingType['id']); } $tp->assign('refine_search_items_limit', SJB_Settings::getSettingByName('refine_search_items_limit')); $tp->assign('listingTypes', $listingTypes); $tp->display('refine_search.tpl'); }
public static function getCurrentSearchByCriteria($criteria) { $returnArray = array(); $locationFields = SJB_ListingFieldManager::getFieldsInfoByType('location'); foreach ($criteria as $fieldName => $field) { if (!in_array($fieldName, array('listing_type', 'active', 'username', 'status', 'CompanyName', 'keywords', 'PostedWithin', 'anonymous'))) { $result = array(); $fieldInfo = SJB_ListingFieldDBManager::getListingFieldInfoByID($fieldName); if (!$fieldInfo) { foreach ($locationFields as $locationField) { $locationSubFields = SJB_ListingFieldManager::getListingFieldsInfoByParentSID($locationField['sid']); foreach ($locationSubFields as $locationSubField) { if ($fieldName == $locationField['id'] . "_" . $locationSubField['id']) { $fieldInfo = $locationSubField; $fieldInfo['id'] = $locationField['id'] . "_" . $locationSubField['id']; } } } } foreach ($field as $fieldType => $fieldValue) { switch ($fieldType) { case 'geo': if ($fieldValue['location'] !== '') { $result[$fieldName][$fieldType][$fieldValue['location']] = $fieldValue['location']; } break; case 'location': if (!empty($fieldValue['value'])) { $result[$fieldName][$fieldType][$fieldValue['value']] = $fieldValue['value']; } break; case 'monetary': if (!empty($fieldValue['not_less']) && $fieldValue['not_less'] !== '') { $result[$fieldName][$fieldType][$fieldValue['not_less']] = $fieldValue['not_less']; } if (!empty($fieldValue['not_more']) && $fieldValue['not_more'] !== '') { $result[$fieldName][$fieldType][$fieldValue['not_more']] = $fieldValue['not_more']; } break; case 'multi_like': $listItem = new SJB_ListingFieldListItemManager(); if (is_array($fieldValue)) { foreach ($fieldValue as $value) { if ($value !== '') { if ($fieldInfo['type'] == 'tree') { $name = SJB_DB::queryValue("SELECT `caption` FROM `listing_field_tree` WHERE `sid` = '{$value}'"); $name = $name ? $name : ''; $result[$fieldName][$fieldType][$value] = $name; } elseif ($fieldInfo['type'] == 'multilist' || $fieldInfo['type'] == 'list') { if (!empty($fieldInfo['parent_sid'])) { if ($fieldInfo['id'] == $fieldInfo['parentID'] . '_State') { $listValues = SJB_StatesManager::getStatesNamesByCountry(false, true, $fieldInfo['display_as']); } else { $listValues = $fieldInfo['list_values']; } foreach ($listValues as $listValue) { if ($listValue['id'] == $value) { $result[$fieldName][$fieldType][$value] = $listValue['caption']; break; } } } else { $itemInfo = $listItem->getListItemBySID($value); $caption = $itemInfo ? $itemInfo->getValue() : $value; $result[$fieldName][$fieldType][$value] = $caption; } } else { $result[$fieldName][$fieldType][$value] = $value; } } } } elseif ($fieldValue !== '') { $itemInfo = $listItem->getListItemBySID($fieldValue); $caption = $itemInfo ? $itemInfo->getValue() : $fieldValue; $result[$fieldName][$fieldType][$fieldValue] = $caption; } break; case 'tree': $fieldValue = $fieldValue ? explode(',', $fieldValue) : ""; if (is_array($fieldValue)) { foreach ($fieldValue as $value) { if ($value !== '') { $name = SJB_DB::queryValue("SELECT `caption` FROM `listing_field_tree` WHERE `sid` = '{$value}'"); $name = $name ? $name : ''; $result[$fieldName][$fieldType][$value] = $name; } } } break; case 'multi_like_and': if (is_array($fieldValue)) { $listItem = new SJB_ListingFieldListItemManager(); foreach ($fieldValue as $value) { if ($value !== '') { if ($fieldInfo['type'] == 'tree') { $name = SJB_DB::queryValue("SELECT `caption` FROM `listing_field_tree` WHERE `sid` = '{$value}'"); $name = $name ? $name : ''; $result[$fieldName][$fieldType][$value] = $name; } elseif ($fieldInfo['type'] == 'multilist' || $fieldInfo['type'] == 'list') { if (!empty($fieldInfo['parent_sid'])) { if ($fieldInfo['id'] == $fieldInfo['parentID'] . '_State') { $listValues = SJB_StatesManager::getStatesNamesByCountry(false, true, $fieldInfo['display_as']); } else { $listValues = $fieldInfo['list_values']; } foreach ($listValues as $listValue) { if ($listValue['id'] == $value) { $result[$fieldName][$fieldType][$value] = $listValue['caption']; break; } } } else { $itemInfo = $listItem->getListItemBySID($value); $caption = $itemInfo ? $itemInfo->getValue() : $value; $result[$fieldName][$fieldType][$value] = $caption; } } else { $result[$fieldName][$fieldType][$value] = $value; } } } } elseif ($fieldValue !== '') { $result[$fieldName][$fieldType][$fieldValue] = $fieldValue; } break; default: if (is_array($fieldValue)) { foreach ($fieldValue as $value) { if ($value !== '') { $result[$fieldName][$fieldType][$value] = $value; } } } elseif ($fieldValue !== '') { $result[$fieldName][$fieldType][$fieldValue] = $fieldValue; } break; } } if ($result && !empty($fieldInfo)) { $returnArray[$fieldInfo['id']]['name'] = $fieldInfo['caption']; $returnArray[$fieldInfo['id']]['field'] = $result[$fieldInfo['id']]; } } elseif ($fieldName == 'CompanyName') { $result = array(); $userFieldSID = SJB_DB::queryValue("SELECT `sid` FROM `user_profile_fields` WHERE `id` = 'CompanyName'"); if ($userFieldSID) { $fieldInfo = SJB_UserProfileFieldManager::getFieldInfoBySID($userFieldSID); foreach ($field as $fieldType => $fieldValue) { switch ($fieldType) { case 'multi_like_and': if (is_array($fieldValue)) { foreach ($fieldValue as $value) { if ($value !== '') { $result[$fieldName][$fieldType][$value] = $value; } } } elseif ($fieldValue !== '') { $result[$fieldName][$fieldType][$fieldValue] = $fieldValue; } break; } } } if ($result && !empty($fieldInfo)) { $returnArray[$fieldInfo['id']]['name'] = $fieldInfo['caption']; $returnArray[$fieldInfo['id']]['field'] = $result[$fieldInfo['id']]; } } elseif ($fieldName == 'keywords') { foreach ($field as $key => $val) { if ($val) { $returnArray['keywords']['field'][$key][$val] = $val; } } if (isset($returnArray['keywords'])) { $returnArray['keywords']['name'] = 'Keywords'; } } } return $returnArray; }