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(); $user_info = SJB_Authorization::getCurrentUserInfo(); if (!empty($user_info['subuser'])) { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/sub-accounts/edit/?user_id=' . $user_info['subuser']['sid']); } if (!empty($user_info)) { $user_info = array_merge($user_info, $_REQUEST); $username = $user_info['username']; $user_group_info = SJB_UserGroupManager::getUserGroupInfoBySID($user_info['user_group_sid']); $delete_profile = SJB_Request::getVar('command', '', 'post') == 'unregister-user'; $errors = array(); if ($delete_profile && SJB_Acl::getInstance()->isAllowed('delete_user_profile')) { try { $user = SJB_UserManager::getObjectBySID($user_info['sid']); SJB_UserManager::deleteUserById($user_info['sid']); SJB_AdminNotifications::sendAdminDeletingUserProfile($user, SJB_Request::getVar('reason', '', 'post')); SJB_Authorization::logout(); $user_info = array(); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/edit-profile/?profile_deleted=true'); } catch (Exception $e) { $errors[] = $e->getMessage(); } } $user = new SJB_User($user_info, $user_info['user_group_sid']); $user->setSID($user_info['sid']); $user->deleteProperty("active"); $user->deleteProperty("featured"); $user->makePropertyNotRequired("password"); $user->getProperty('email')->type->disableEmailConfirmation(); $edit_profile_form = new SJB_Form($user); $edit_profile_form->registerTags($tp); $edit_profile_form->makeDisabled("username"); $form_submitted = SJB_Request::getVar('action', false) == 'save_info'; if ($form_submitted && $edit_profile_form->isDataValid($errors)) { $password_value = $user->getPropertyValue('password'); if (empty($password_value['original'])) { $user->deleteProperty('password'); } SJB_UserManager::saveUser($user); SJB_Authorization::updateCurrentUserSession(); // >>> SJB-1197 // needs to check session for ajax-uploaded files, and set it to user profile $tmpUploadsStorage = SJB_Session::getValue('tmp_uploads_storage'); $formToken = SJB_Request::getVar('form_token'); if (!empty($formToken)) { $tmpUploadedFields = SJB_Array::getPath($tmpUploadsStorage, $formToken); if (!is_null($tmpUploadsStorage) && is_array($tmpUploadedFields)) { // prepare user profile fields array $userProfileFieldsInfo = SJB_UserProfileFieldManager::getAllFieldsInfo(); $userProfileFields = array(); foreach ($userProfileFieldsInfo as $field) { $userProfileFields[$field['id']] = $field; } // look for temporary values foreach ($tmpUploadedFields as $fieldId => $fieldInfo) { // check field ID for valid ID in user profile fields if (!array_key_exists($fieldId, $userProfileFields) || empty($fieldInfo)) { continue; } $fieldType = $userProfileFields[$fieldId]['type']; $profilePropertyId = $fieldId . '_' . $user->getSID(); switch (strtolower($fieldType)) { case 'video': case 'file': // change temporary file ID SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $profilePropertyId, $fieldInfo['file_id']); // set value of user property to new uploaded file $user->setPropertyValue($fieldId, $profilePropertyId); break; case 'logo': // change temporary file ID and thumb ID SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $profilePropertyId, $fieldInfo['file_id']); SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $profilePropertyId . '_thumb', $fieldInfo['file_id'] . '_thumb'); // set value of user property to new uploaded file $user->setPropertyValue($fieldId, $profilePropertyId); break; default: break; } $tmpUploadsStorage = SJB_Array::unsetValueByPath($tmpUploadsStorage, "{$formToken}/{$fieldId}"); } // and save user with new fields data SJB_UserManager::saveUser($user); SJB_Authorization::updateCurrentUserSession(); // clean temporary storage $tmpUploadsStorage = SJB_Array::unsetValueByPath($tmpUploadsStorage, "{$formToken}"); // CLEAR TEMPORARY SESSION STORAGE SJB_Session::setValue('tmp_uploads_storage', $tmpUploadsStorage); } } // <<< SJB-1197 $tp->assign("form_is_submitted", true); } else { $tp->assign("errors", $errors); } $form_fields = $edit_profile_form->getFormFieldsInfo(); $metaDataProvider = SJB_ObjectMother::getMetaDataProvider(); $tp->assign("METADATA", array("form_fields" => $metaDataProvider->getFormFieldsMetadata($form_fields))); $tp->assign("show_mailing_flag", $user_group_info['show_mailing_flag']); $tp->assign("form_fields", $form_fields); $tp->assign('userTree', true); $tp->display('edit_profile.tpl'); } elseif (empty($user_info) && SJB_Request::getVar('profile_deleted', '') == true) { $user = new SJB_User(array()); $edit_profile_form = new SJB_Form($user); $edit_profile_form->registerTags($tp); $edit_profile_form->makeDisabled("username"); $form_fields = $edit_profile_form->getFormFieldsInfo(); $metaDataProvider = SJB_ObjectMother::getMetaDataProvider(); $tp->assign("METADATA", array("form_fields" => $metaDataProvider->getFormFieldsMetadata($form_fields))); $tp->assign("form_fields", $form_fields); $tp->assign('action', 'delete_profile'); $tp->assign('tree_link_users', 'users'); $tp->assign('userTree', true); $tp->display('edit_profile.tpl'); } else { $tp->assign("ERROR", "NOT_LOGIN"); $tp->display("../miscellaneous/error.tpl"); return; } }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $errors = array(); $registration_form_template = 'registration_form.tpl'; if (SJB_Authorization::isUserLoggedIn()) { $tp->display('already_logged_in.tpl'); return; } $tp->assign('terms_of_use_check', SJB_System::getSettingByName('terms_of_use_check')); $user_group_id = SJB_Request::getVar('user_group_id', null); if (!is_null($user_group_id)) { $user_group_sid = SJB_UserGroupManager::getUserGroupSIDByID($user_group_id); if (empty($user_group_sid)) { $errors['NO_SUCH_USER_GROUP_IN_THE_SYSTEM'] = 1; } } $this->setSessionValueForRedirectAfterRegister(); if (!is_null($user_group_id) && empty($errors)) { $user_group_info = SJB_UserGroupManager::getUserGroupInfoBySID($user_group_sid); $user = SJB_ObjectMother::createUser($_REQUEST, $user_group_sid); if (SJB_Request::isAjax() || 'true' == SJB_Request::getVar('isajaxrequest')) { $field = SJB_Request::getVar('type'); if ('email' == $field) { $user->getProperty($field)->type->disableEmailConfirmation(); } echo $user->getProperty($field)->isValid(); exit; } $user->deleteProperty('active'); $user->deleteProperty('featured'); $form_submitted = SJB_Request::getVar('action', false) == 'register'; if (class_exists('MobilePlugin') && MobilePlugin::isMobileThemeOn()) { $user->prepareRegistrationFields(); } $registration_form = SJB_ObjectMother::createForm($user); $registration_form->registerTags($tp); if (SJB_UserGroupManager::isUserEmailAsUsernameInUserGroup($user_group_sid) && $form_submitted) { $email = $user->getPropertyValue('email'); if (is_array($email)) { $email = $email['original']; } $user->setPropertyValue('username', $email); } if ($form_submitted && $registration_form->isDataValid($errors)) { $user->deleteProperty('captcha'); $defaultProduct = SJB_UserGroupManager::getDefaultProduct($user_group_sid); SJB_UserManager::saveUser($user); SJB_Statistics::addStatistics('addUser', $user->getUserGroupSID(), $user->getSID()); $availableProductIDs = SJB_ProductsManager::getProductsIDsByUserGroupSID($user_group_sid); if ($defaultProduct && in_array($defaultProduct, $availableProductIDs)) { $contract = new SJB_Contract(array('product_sid' => $defaultProduct)); $contract->setUserSID($user->getSID()); $contract->saveInDB(); } // >>> SJB-1197 // needs to check session for ajax-uploaded files, and set it to user profile $formToken = SJB_Request::getVar('form_token'); $tmpUploadsStorage = SJB_Session::getValue('tmp_uploads_storage'); if (!empty($formToken)) { $tmpUploadedFields = SJB_Array::getPath($tmpUploadsStorage, $formToken); if (!is_null($tmpUploadsStorage) && is_array($tmpUploadedFields)) { // prepare user profile fields array $userProfileFieldsInfo = SJB_UserProfileFieldManager::getAllFieldsInfo(); $userProfileFields = array(); foreach ($userProfileFieldsInfo as $field) { $userProfileFields[$field['id']] = $field; } // look for temporary values foreach ($tmpUploadedFields as $fieldId => $fieldInfo) { // check field ID for valid ID in user profile fields if (!array_key_exists($fieldId, $userProfileFields) || empty($fieldInfo)) { continue; } $fieldType = $userProfileFields[$fieldId]['type']; $profilePropertyId = $fieldId . '_' . $user->getSID(); switch (strtolower($fieldType)) { case 'video': case 'file': // change temporary file ID SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $profilePropertyId, $fieldInfo['file_id']); // set value of user property to new uploaded file $user->setPropertyValue($fieldId, $profilePropertyId); break; case 'logo': // change temporary file ID and thumb ID SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $profilePropertyId, $fieldInfo['file_id']); SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $profilePropertyId . '_thumb', $fieldInfo['file_id'] . '_thumb'); // set value of user property to new uploaded file $user->setPropertyValue($fieldId, $profilePropertyId); break; default: break; } $tmpUploadsStorage = SJB_Array::unsetValueByPath($tmpUploadsStorage, "{$formToken}/{$fieldId}"); } // save user with new values SJB_UserManager::saveUser($user); // clean temporary storage $tmpUploadsStorage = SJB_Array::unsetValueByPath($tmpUploadsStorage, "{$formToken}"); // CLEAR TEMPORARY SESSION STORAGE SJB_Session::setValue('tmp_uploads_storage', $tmpUploadsStorage); } } // <<< SJB-1197 // notifying administrator SJB_AdminNotifications::sendAdminUserRegistrationLetter($user); // Activation $isSendActivationEmail = SJB_UserGroupManager::isSendActivationEmail($user_group_sid); $isApproveByAdmin = SJB_UserGroupManager::isApproveByAdmin($user_group_sid); if ($isApproveByAdmin) { SJB_UserManager::setApprovalStatusByUserName($user->getUserName(), 'Pending'); } if ($isSendActivationEmail) { $fromAnonymousShoppingCart = SJB_Session::getValue('fromAnonymousShoppingCart'); SJB_Session::unsetValue('fromAnonymousShoppingCart'); $isSent = SJB_Notifications::sendUserActivationLetter($user->getSID(), $fromAnonymousShoppingCart ? true : false); if ($isSent) { $registration_form_template = 'registration_confirm.tpl'; } else { SJB_FlashMessages::getInstance()->addWarning('ERROR_SEND_ACTIVATION_EMAIL'); $registration_form_template = 'registration_failed_to_send_activation_email.tpl'; } } else { if (!$isSendActivationEmail && $isApproveByAdmin) { SJB_UserManager::setApprovalStatusByUserName($user->getUserName(), 'Pending'); $registration_form_template = 'registration_pending.tpl'; } else { SJB_UserManager::activateUserByUserName($user->getUserName()); if (!SJB_SocialPlugin::getProfileSocialID($user->getSID())) { SJB_Notifications::sendUserWelcomeLetter($user->getSID()); } SJB_Authorization::login($user->getUserName(), $_REQUEST['password']['original'], false, $errors); $proceedToPosting = SJB_Session::getValue('proceed_to_posting'); if ($proceedToPosting) { $redirectUrl = SJB_HelperFunctions::getSiteUrl() . '/add-listing/?listing_type_id=' . SJB_Session::getValue('listing_type_id') . '&proceed_to_posting=' . $proceedToPosting . '&productSID=' . SJB_Session::getValue('productSID'); } else { $pageId = !empty($user_group_info['after_registration_redirect_to']) ? $user_group_info['after_registration_redirect_to'] : ''; $redirectUrl = SJB_UserGroupManager::getRedirectUrlByPageID($pageId); } SJB_HelperFunctions::redirect($redirectUrl); } } } else { if (SJB_UserGroupManager::isUserEmailAsUsernameInUserGroup($user_group_sid)) { $user->deleteProperty('username'); } $registration_form = SJB_ObjectMother::createForm($user); $registration_form->registerTags($tp); $registration_form_template = 'registration_form.tpl'; if (isset($_REQUEST['reg_form_template'])) { $registration_form_template = $_REQUEST['reg_form_template']; } elseif (!empty($user_group_info['reg_form_template'])) { $registration_form_template = $user_group_info['reg_form_template']; } $form_fields = $registration_form->getFormFieldsInfo(); // define default template with ajax checking $registration_form->setDefaultTemplateByFieldName('email', 'email_ajaxchecking.tpl'); $registration_form->setDefaultTemplateByFieldName('username', 'unique_string.tpl'); // use specific template for user profile video $registration_form->setDefaultTemplateByFieldName('video', 'video_profile.tpl'); $user_group_info = SJB_UserGroupManager::getUserGroupInfoBySID($user_group_sid); $tp->assign('user_group_info', $user_group_info); $tp->assign('errors', $errors); $tp->assign('form_fields', $form_fields); $metaDataProvider = SJB_ObjectMother::getMetaDataProvider(); $tp->assign('METADATA', array('form_fields' => $metaDataProvider->getFormFieldsMetadata($form_fields))); } } else { $registration_form_template = 'registration_choose_user_group.tpl'; $user_groups_info = SJB_UserGroupManager::getAllUserGroupsInfo(); $tp->assign('user_groups_info', $user_groups_info); } $tp->assign('userTree', true); $tp->assign('errors', $errors); $tp->display($registration_form_template); }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $parent_name = null; $user_sid = SJB_Request::getVar('user_sid', false); if (!is_null($user_sid)) { $user_info = SJB_UserManager::getUserInfoBySID($user_sid); $user_info = array_merge($user_info, $_REQUEST); $form_submitted = SJB_Request::getVar('action_name'); $user = new SJB_User($user_info, $user_info['user_group_sid']); if (!empty($user_info['parent_sid'])) { $props = $user->getProperties(); $allowedProperties = array('username', 'email', 'password'); foreach ($props as $prop) { if (!in_array($prop->getID(), $allowedProperties)) { $user->deleteProperty($prop->getID()); } } $parent_name = SJB_UserManager::getUserNameByUserSID($user_info['parent_sid']); } $user->setSID($user_info['sid']); $user->getProperty('email')->type->disableEmailConfirmation(); $user->deleteProperty("active"); $user->makePropertyNotRequired("password"); if (SJB_UserGroupManager::isUserEmailAsUsernameInUserGroup($user_info['user_group_sid'])) { if ($form_submitted) { $email = $user->getPropertyValue('email'); if (is_array($email)) { $email = $email['original']; } $user->setPropertyValue('username', $email); } } $user->addExtUserIDProperty($user_info['extUserID']); $edit_user_form = new SJB_Form($user); $errors = array(); if ($form_submitted && $edit_user_form->isDataValid($errors)) { $password_value = $user->getPropertyValue('password'); $properties = null; if (empty($password_value['original'])) { $properties = $user->getProperties(); $user->deleteProperty('password'); } SJB_UserManager::saveUser($user); // >>> SJB-1197 // needs to check session for ajax-uploaded files, and set it to user profile $tmpUploadsStorage = SJB_Session::getValue('tmp_uploads_storage'); $formToken = SJB_Request::getVar('form_token'); if (!empty($formToken)) { $tmpUploadedFields = SJB_Array::getPath($tmpUploadsStorage, $formToken); if (!is_null($tmpUploadsStorage) && is_array($tmpUploadedFields)) { // prepare user profile fields array $userProfileFieldsInfo = SJB_UserProfileFieldManager::getAllFieldsInfo(); $userProfileFields = array(); foreach ($userProfileFieldsInfo as $field) { $userProfileFields[$field['id']] = $field; } // look for temporary values foreach ($tmpUploadedFields as $fieldId => $fieldInfo) { // check field ID for valid ID in user profile fields if (!array_key_exists($fieldId, $userProfileFields) || empty($fieldInfo)) { continue; } $fieldType = $userProfileFields[$fieldId]['type']; $profilePropertyId = $fieldId . '_' . $user->getSID(); switch (strtolower($fieldType)) { case 'video': case 'file': // change temporary file ID SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $profilePropertyId, $fieldInfo['file_id']); // set value of user property to new uploaded file $user->setPropertyValue($fieldId, $profilePropertyId); break; case 'logo': // change temporary file ID and thumb ID SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $profilePropertyId, $fieldInfo['file_id']); SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $profilePropertyId . '_thumb', $fieldInfo['file_id'] . '_thumb'); // set value of user property to new uploaded file $user->setPropertyValue($fieldId, $profilePropertyId); break; default: break; } $tmpUploadsStorage = SJB_Array::unsetValueByPath($tmpUploadsStorage, "{$formToken}/{$fieldId}"); } // and save user with new fields data SJB_UserManager::saveUser($user); SJB_Authorization::updateCurrentUserSession(); // clean temporary storage $tmpUploadsStorage = SJB_Array::unsetValueByPath($tmpUploadsStorage, "{$formToken}"); // CLEAR TEMPORARY SESSION STORAGE SJB_Session::setValue('tmp_uploads_storage', $tmpUploadsStorage); } } // <<< SJB-1197 if (SJB_Request::isAjax()) { echo "<p class=\"green\">User Saved</p>"; exit; } if ($form_submitted == 'save_info') { $userGroupInfo = SJB_UserGroupManager::getUserGroupInfoBySID($user_info['user_group_sid']); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/manage-users/" . mb_strtolower($userGroupInfo['id'], 'utf8')); } if (!empty($properties)) { $user->details->properties = $properties; } } if (SJB_UserGroupManager::isUserEmailAsUsernameInUserGroup($user_info['user_group_sid'])) { $user->deleteProperty("username"); } $listingTypes = SJB_ListingTypeManager::getAllListingTypesInfo(); $products = SJB_ProductsManager::getProductsInfoByUserGroupSID($user_info['user_group_sid']); $allowedListingTypes = array(); foreach ($products as $product) { if (!empty($product['listing_type_sid']) && empty($allowedListingTypes[$product['listing_type_sid']])) { foreach ($listingTypes as $listingType) { if ($product['listing_type_sid'] == $listingType['sid']) { $allowedListingTypes[$product['listing_type_sid']] = $listingType; } } } } $edit_user_form = SJB_ObjectMother::createForm($user); $edit_user_form->registerTags($tp); $userGroupInfo = SJB_UserGroupManager::getUserGroupInfoBySID($user_info['user_group_sid']); if (SJB_UserManager::checkBan($errors, $user_info['ip'])) { $user_info['ip_is_banned'] = 1; } $tp->assign("form_fields", $edit_user_form->getFormFieldsInfo()); $tp->assign("uploadMaxFilesize", SJB_UploadFileManager::getIniUploadMaxFilesize()); $tp->assign("errors", $errors); $tp->assign("listingTypes", $allowedListingTypes); $tp->assign("user_info", $user_info); $tp->assign("user_group_info", $userGroupInfo); $tp->assign('userTree', true); $tp->assign("parent_name", $parent_name); $tp->assign("restore", preg_match('/manage-(jobseekers)|(employers)|([a-z0-9\\_]-users)/', SJB_Request::getVar('HTTP_REFERER', '', 'SERVER'))); SJB_System::setGlobalTemplateVariable('wikiExtraParam', $userGroupInfo['id']); $tp->display("edit_user.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(); $extUserID = SJB_Request::getVar('extUserID', null); $passedParametersViaUri = SJB_UrlParamProvider::getParams(); $userGroupID = $passedParametersViaUri ? array_shift($passedParametersViaUri) : false; if (!$userGroupID) { $userGroupsInfo = SJB_UserGroupManager::getAllUserGroupsInfo(); $tp->assign('user_groups_info', $userGroupsInfo); $tp->display('add_user_choose_user_group.tpl'); } else { $userGroupSID = SJB_UserGroupManager::getUserGroupSIDByID($userGroupID); $userGroupInfo = SJB_UserGroupManager::getUserGroupInfoBySID($userGroupSID); $user = SJB_ObjectMother::createUser($_REQUEST, $userGroupSID); $user->deleteProperty('active'); $user->addExtUserIDProperty($extUserID); $registration_form = SJB_ObjectMother::createForm($user); $registration_form->registerTags($tp); $form_submitted = SJB_Request::getVar('action', '') == 'add'; $errors = array(); if (SJB_UserGroupManager::isUserEmailAsUsernameInUserGroup($userGroupSID) && $form_submitted) { $email = $user->getPropertyValue('email'); if (is_array($email)) { $email = $email['original']; } $user->setPropertyValue('username', $email); } if ($form_submitted && $registration_form->isDataValid($errors)) { SJB_UserManager::saveUser($user); // >>> SJB-1197 // needs to check session for ajax-uploaded files, and set it to user profile $tmpUploadsStorage = SJB_Session::getValue('tmp_uploads_storage'); $formToken = SJB_Request::getVar('form_token'); if (!empty($formToken)) { $tmpUploadedFields = SJB_Array::getPath($tmpUploadsStorage, $formToken); if (!is_null($tmpUploadsStorage) && is_array($tmpUploadedFields)) { // prepare user profile fields array $userProfileFieldsInfo = SJB_UserProfileFieldManager::getAllFieldsInfo(); $userProfileFields = array(); foreach ($userProfileFieldsInfo as $field) { $userProfileFields[$field['id']] = $field; } // look for temporary values foreach ($tmpUploadedFields as $fieldId => $fieldInfo) { // check field ID for valid ID in user profile fields if (!array_key_exists($fieldId, $userProfileFields) || empty($fieldInfo)) { continue; } $fieldType = $userProfileFields[$fieldId]['type']; $profilePropertyId = $fieldId . '_' . $user->getSID(); switch (strtolower($fieldType)) { case 'video': case 'file': // change temporary file ID SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $profilePropertyId, $fieldInfo['file_id']); // set value of user property to new uploaded file $user->setPropertyValue($fieldId, $profilePropertyId); break; case 'logo': // change temporary file ID and thumb ID SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $profilePropertyId, $fieldInfo['file_id']); SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` = ?s", $profilePropertyId . '_thumb', $fieldInfo['file_id'] . '_thumb'); // set value of user property to new uploaded file $user->setPropertyValue($fieldId, $profilePropertyId); break; default: break; } $tmpUploadsStorage = SJB_Array::unsetValueByPath($tmpUploadsStorage, "{$formToken}/{$fieldId}"); } // and save user with new fields data SJB_UserManager::saveUser($user); // clean temporary storage $tmpUploadsStorage = SJB_Array::unsetValueByPath($tmpUploadsStorage, "{$formToken}"); // CLEAR TEMPORARY SESSION STORAGE SJB_Session::setValue('tmp_uploads_storage', $tmpUploadsStorage); } } // <<< SJB-1197 SJB_UserManager::activateUserByUserName($user->getUserName()); $defaultProduct = SJB_UserGroupManager::getDefaultProduct($userGroupSID); $availableProductIDs = SJB_ProductsManager::getProductsIDsByUserGroupSID($userGroupSID); if ($defaultProduct && in_array($defaultProduct, $availableProductIDs)) { $contract = new SJB_Contract(array('product_sid' => $defaultProduct)); $contract->setUserSID($user->getSID()); $contract->saveInDB(); } SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/manage-users/" . mb_strtolower($userGroupInfo['id'], 'utf8')); } else { if (SJB_UserGroupManager::isUserEmailAsUsernameInUserGroup($userGroupSID)) { $user->deleteProperty('username'); } $registration_form = SJB_ObjectMother::createForm($user); $registration_form->registerTags($tp); $tp->assign("errors", $errors); $tp->assign("user_group", $userGroupInfo); $tp->assign('userTree', true); $tp->assign("form_fields", $registration_form->getFormFieldsInfo()); $tp->assign("uploadMaxFilesize", SJB_UploadFileManager::getIniUploadMaxFilesize()); $tp->display("add_user.tpl"); } } }