* * @package stUser * @subpackage actions */ class stUserDataComponents extends sfComponents { public function executeProfileList() { if (!$this->getUser()->isAuthenticated()) { return sfView::NONE; } $c = new Criteria(); $c->add(UserDataPeer::FULL_NAME, null, Criteria::ISNOTNULL); if (!isset($this->type)) { $this->type = 'billing'; } if ($this->type == 'delivery'|| $this->type == 'user_edit_profile_delivery') { $c->add(UserDataPeer::IS_BILLING, false); } if ($this->type == 'billing' || $this->type == 'user_edit_profile_billing') { $c->add(UserDataPeer::IS_BILLING, true); } if (isset($this->country_id)) { $c->add(UserDataPeer::COUNTRIES_ID, $this->country_id); } $c->add(UserDataPeer::SF_GUARD_USER_ID, $this->getUser()->getGuardUser()->getId()); if (UserDataPeer::doCount($c) < 2) { return sfView::NONE; } $profiles = UserDataPeer::doSelect($c); $items = array(); foreach ($profiles as $profile) { $items[$profile->getId()] = array('id' => $profile->getId(), 'label' => $profile->getProfileName()); if (!isset($this->selected) && $profile->getIsDefault()) { $this->selected = $profile->getId(); } } if (!isset($this->selected) && $profiles) { $this->selected = $profiles[0]; } unset($profiles); $this->smarty = new stSmarty('stUserData'); $this->smarty->assign('profiles', $items); $this->smarty->assign('selected', $this->selected); $this->smarty->assign('type', $this->type); } /** * @deprecated use stUserDataComponents::executeProfileList instead */ public function executeBasketUserDataProfile() { $this->smarty = new stSmarty('stUserData'); $this->userDataType = $this->getUserDataTypeNumericValue($this->type); $delivery = stDeliveryFrontend::getInstance(stBasket::getInstance($this->getUser())); $c = new Criteria(); if (!$this->userDataType) { if ($delivery->getDefaultDeliveryCountry()) { $c->add(UserDataPeer::COUNTRIES_ID, $delivery->getDefaultDeliveryCountry()->getId()); } if ($this->getUser()->getUserDataDefaultDelivery()) { $this->defaultUserData = $this->getUser()->getUserDataDefaultDelivery()->getId(); } } else { if ($this->getUser()->getUserDataDefaultBilling()) { $this->defaultUserData = $this->getUser()->getUserDataDefaultBilling()->getId(); } } $c->add(UserDataPeer::SF_GUARD_USER_ID, $this->getUser()->getAttribute('user_id', null, 'sfGuardSecurityUser')); $c->add(UserDataPeer::IS_BILLING, $this->userDataType); $c->add(UserDataPeer::FULL_NAME, null, Criteria::ISNOTNULL); $user_data = UserDataPeer::doSelect($c); $select_options = array(); $has_default = false; foreach ($user_data as $ud) { $select_options[$ud->getId()] = $ud->getProfileName(); if ($ud->getId() == $this->defaultUserProfile) { $has_default = true; } } if (!$has_default) { $select_options = array('' => '---') + $select_options; } $this->select_options = $select_options; } /** */ public function getUserDataTypeNumericValue($userDataType) { if ($userDataType == "billing") { return 1; } else { return 0; } } /** * Zwraca obiekt zarzadzajacy zdarzeniami * * @return stEventDispatcher */ public function getDispatcher() { return stEventDispatcher::getInstance(); } /** * Wyświetla menu panelu * * @author Marcin Butlak */ public function executeUserPanelMenu() { $this->smarty = new stSmarty('stUserData'); $this->panel_navigator = stTabNavigator::getInstance($this->getContext(), null, null, false); $this->panel_navigator->addTab('Moje konto', 'stUserData', 'userPanel', null, 'userPanel'); $this->panel_navigator->addTab('Moje dane', 'stUser', 'editAccount', null, 'editAccount'); $this->panel_navigator->addTab('Lista produktow', 'stUserData', 'productList', null, 'productList'); $this->panel_navigator->setTab(isset($this->action)? $this->action : $this->getActionName()); $this->getDispatcher()->notify(new sfEvent($this, 'stUserDataComponents.postExecuteUserPanelMenu')); } public function executeResponsiveUserPanelMenu() { $this->smarty = new stSmarty('stUserData'); } public function executeResponsiveUserPanelBreadcrumbs() { $this->smarty = new stSmarty('stUserData'); } public function updateUserLoginForm($user_data, $request_parameter) { $user_request = $this->getRequestParameter($request_parameter); if (isset($user_request['full_name'])) { $user_data->setFullName($user_request['full_name']); } if (isset($user_request['address'])) { $user_data->setAddress($user_request['address']); } if (isset($user_request['address_more'])) { $user_data->setAddressMore($user_request['address_more']); } if (isset($user_request['region'])) { $user_data->setRegion($user_request['region']); } if (isset($user_request['pesel'])) { $user_data->setPesel($user_request['pesel']); } if (isset($user_request['code'])) { $user_data->setCode($user_request['code']); } if (isset($user_request['town'])) { $user_data->setTown($user_request['town']); } if (isset($user_request['country'])) { $user_data->setCountriesId($user_request['country']); } if (isset($user_request['phone'])) { $user_data->setPhone($user_request['phone']); } if (isset($user_request['company'])) { $user_data->setCompany($user_request['company']); } if (isset($user_request['vatNumber'])) { $user_data->setVatNumber($user_request['vatNumber']); } } /** * Formularz billingu w koszyku dla zalogowanego użytkownika */ public function executeOrderFormBilling() { $this->smarty = new stSmarty('stUserData'); $user_config = stConfig::getInstance(sfContext::getInstance(), 'stUser'); $invoice_config = stConfig::getInstance($this->getContext(), 'stInvoiceBackend'); if($invoice_config->get('invoice_on')==1) { $this->show_invoice_request = 1; if($invoice_config->get('auto_invoice_on')==1) { $this->auto_invoice_request = 1; } } $this->show_region = $user_config->get('show_region'); $this->show_pesel = $user_config->get('show_pesel'); $this->show_address_more = $user_config->get('show_address_more'); $user_data_billing = $this->getRequestParameter('user_data_billing', []); if ($this->getUser()->isAuthenticated()) { /** * @var UserData|null $userDataDefaultBilling */ $userDataDefaultBilling = isset($this->profile_id) ? UserDataPeer::retrieveByPK($this->profile_id) : $this->getUser()->getUserDataDefaultbilling(); if(!$userDataDefaultBilling) { $userDataDefaultBilling = stUser::addEmptyUserData(1,1); }; $fields = [ 'company', 'vat_number', 'customer_type', 'full_name', 'address', 'address_more', 'region', 'code', 'town', 'phone', 'country', 'pesel', 'customer_type', ]; $userDataDefaulBillingFields = $userDataDefaultBilling->toArray(BasePeer::TYPE_FIELDNAME); $userDataDefaulBillingFields['customer_type'] = $userDataDefaultBilling->getCustomerType(); foreach ($fields as $field) { if (!isset($user_data_billing[$field]) || $this->getVar('force_default')) { $defaultField = $field === 'country' ? 'countries_id' : $field; $user_data_billing[$field] = $userDataDefaulBillingFields[$defaultField]; } } $user_data_billing['description'] = ""; } if (!isset($user_data_billing['customer_type'])) { $user_data_billing['customer_type'] = 1; } if ($this->getUser()->hasVatEu()) { $user_data_billing['customer_type'] = 2; } $this->user_data_billing = $user_data_billing; } /** * Pobranie obejktu z danymi użytkownika */ public function executeOrderFormDelivery() { $basket = stBasket::getInstance($this->getUser()); $this->smarty = new stSmarty('stUserData'); $this->delivery = stDeliveryFrontend::getInstance($basket); $user_config = stConfig::getInstance(sfContext::getInstance(), 'stUser'); $this->show_region = $user_config->get('show_region'); $this->show_pesel = $user_config->get('show_pesel'); $this->show_address_more = $user_config->get('show_address_more'); $user_data_delivery = $this->getRequestParameter('user_data_delivery'); if ($this->getUser()->isAuthenticated()) { /** * @var UserData|null $userDataDefaultDelivery */ $userDataDefaultDelivery = isset($this->profile_id) ? UserDataPeer::retrieveByPK($this->profile_id) : $this->getUser()->getUserDataDefaultDelivery(); if(!$userDataDefaultDelivery) { $userDataDefaultDelivery = stUser::addEmptyUserData(0,1); } $fields = [ 'company', 'customer_type', 'full_name', 'address', 'address_more', 'region', 'code', 'town', 'phone', ]; $userDataDefaultDeliveryFields = $userDataDefaultDelivery->toArray(BasePeer::TYPE_FIELDNAME); $userDataDefaultDeliveryFields['customer_type'] = $userDataDefaultDelivery->getCustomerType(); foreach ($fields as $field) { if (!isset($user_data_delivery[$field]) || $this->getVar('force_default')) { $defaultField = $field === 'country' ? 'countries_id' : $field; $user_data_delivery[$field] = $userDataDefaultDeliveryFields[$defaultField]; } } } if (!isset($user_data_delivery['customer_type'])) { $user_data_delivery['customer_type'] = 1; } $this->user_data_delivery = $user_data_delivery; $this->delivery_country_id = $this->delivery->getDefaultDeliveryCountry() ? $this->delivery->getDefaultDeliveryCountry()->getId() : null; } /** * Pobranie obejktu z danymi użytkownika */ public function executeOrderForm() { $smarty = new stSmarty('stUserData'); $basket = stBasket::getInstance($this->getUser()); $this->setVar('delivery', stDeliveryFrontend::getInstance($basket)); $this->setVar('config', stConfig::getInstance('stSecurityBackend')); $this->setVar('user_config', stConfig::getInstance('stUser')); $this->setVar('smarty', $smarty); $this->setVar('user_data_billing', $this->getUserDataBilling()); $this->setVar('user_data_delivery', $this->getUserDataDelivery()); $this->setVar('user_basket_form_error', $this->getRequest()->getMethod() == sfRequest::POST && $this->hasRequestParameter('submit_save')); $this->setVar('delivery_country_id', $this->delivery->getDefaultDeliveryCountry() ? $this->delivery->getDefaultDeliveryCountry()->getId() : null); } /** * Pobranie obejktu z danymi użytkownika */ public function getUserData($id) { $c = new Criteria(); $c->add(UserDataPeer::ID, $id); $userData = UserDataPeer::doSelectOne($c); if (!$userData) { return false; } return $userData; } /** */ public function executeEditProfileForm() { $this->smarty = new stSmarty('stUserData'); $user_config = stConfig::getInstance(sfContext::getInstance(), 'stUser'); $this->show_region = $user_config->get('show_region'); $this->show_pesel = $user_config->get('show_pesel'); $this->show_address_more = $user_config->get('show_address_more'); $userDataId = $this->getRequestParameter('userDataId'); $showEditProfileForm = $this->getRequestParameter('showEditProfileForm'); $userDataType = $this->getRequestParameter('userDataType'); $showMessage = $this->getRequestParameter('showMessage'); $userData = $this->getUserData($userDataId); $userDataFromRequest = $this->getRequestParameter('user_data'); //$userDataDeliveryFromRequest = $this->getRequestParameter('user_data_delivery'); if ($userDataFromRequest) { $userData->setId($userDataFromRequest['id']); if (isset($userDataFromRequest['full_name'])) { $userData->setFullName($userDataFromRequest['full_name']); } if (isset($userDataFromRequest['address'])) { $userData->setAddress($userDataFromRequest['address']); } if (isset($userDataFromRequest['address_more'])) { $userData->setAddressMore($userDataFromRequest['address_more']); } if (isset($userDataFromRequest['region'])) { $userData->setRegion($userDataFromRequest['region']); } if (isset($userDataFromRequest['code'])) { $userData->setCode($userDataFromRequest['code']); } if (isset($userDataFromRequest['town'])) { $userData->setTown($userDataFromRequest['town']); } if (isset($userDataFromRequest['country'])) { $userData->setCountriesId($userDataFromRequest['country']); } if (isset($userDataDeliveryFromRequest['country'])) { $userData->setCountriesId($userDataDeliveryFromRequest['country']); } if (isset($userDataFromRequest['phone'])) { $userData->setPhone($userDataFromRequest['phone']); } if (isset($userDataFromRequest['company'])) { $userData->setCompany($userDataFromRequest['company']); } if (isset($userDataFromRequest['pesel'])) { $userData->setPesel($userDataFromRequest['pesel']); } } if ($this->getRequestParameter('user_data[customer_type]') == 2 || $userData->getCompany()!="") { $this->type1_checker = 0; $this->type2_checker = 1; } else { $this->type1_checker = 1; $this->type2_checker = 0; } $this->userData = $userData; $this->showEditProfileForm = $showEditProfileForm; $this->userDataType = $userDataType; $this->userDataType = $userDataType; $this->showMessage = $showMessage; } /** */ public function executeEditProfileList() { $this->smarty = new stSmarty('stUserData'); if ($this->getUser()->isAuthenticated()) { $userDataType = $this->getRequestParameter('userDataType'); $showEditProfileForm = $this->getRequestParameter('showEditProfileForm'); if ($userDataType == "delivery") { $is_billing = 0; } else { $is_billing = 1; } $userDataAll = stUser::getUserDataAll($this->getUser()->getAttribute('user_id', null, 'sfGuardSecurityUser'), $is_billing, null, false); $this->userDatas = $userDataAll; $this->userDataType = $userDataType; $this->showEditProfileForm = $showEditProfileForm; } else { stUser::processAuthentication(); } } public function executeDeliveryCountriesSelect() { $basket = stBasket::getInstance($this->getUser()); $delivery = stDeliveryFrontend::getInstance($basket); $this->delivery_countries = $delivery->getDeliveryCountries(true); if ($this->force_default_country_id) { $this->default_delivery_country_id = $this->force_default_country_id; } else { $this->default_delivery_country_id = $delivery->getDefaultDeliveryCountry() ? $delivery->getDefaultDeliveryCountry()->getId() : $this->user_data_delivery->getCountriesId(); } } /** * Pobranie obejktu z danymi użytkownika */ public function executeAjaxEditProfile() { $this->smarty = new stSmarty('stUserData'); $delivery = stDeliveryFrontend::getInstance(stBasket::getInstance($this->getUser())); $user_config = stConfig::getInstance(sfContext::getInstance(), 'stUser'); $this->show_region = $user_config->get('show_region'); $this->show_pesel = $user_config->get('show_pesel'); $this->show_address_more = $user_config->get('show_address_more'); $userDataDefault = UserDataPeer::retrieveByPK($this->profile_id); $user_data['company'] = $userDataDefault->getCompany(); $user_data['vat_number'] = $userDataDefault->getVatNumber(); $user_data['customer_type'] = $user_data['company'] ? 2 : 1; $user_data['full_name'] = $userDataDefault->getFullName(); $user_data['address'] = $userDataDefault->getAddress(); $user_data['address_more'] = $userDataDefault->getAddressMore(); $user_data['code'] = $userDataDefault->getCode(); $user_data['town'] = $userDataDefault->getTown(); $user_data['phone'] = $userDataDefault->getPhone(); $user_data['country'] = $userDataDefault->getCountriesId(); $user_data['pesel'] = $userDataDefault->getPesel(); if ($userDataDefault->getCompany()!="") { $this->type1_checker = 0; $this->type2_checker = 1; } else { $this->type1_checker = 1; $this->type2_checker = 0; } $this->user_data = $user_data; $this->userData = $userDataDefault; } protected function getUserDataBilling(): array { $userConfig = stConfig::getInstance('stUser'); $data = $this->getRequestParameter('user_data_billing', []); return array_replace([ 'company' => null, 'vat_number' => null, 'full_name' => null, 'address' => null, 'region' => null, 'code' => null, 'town' => null, 'phone' => null, 'email' => null, 'email_exist' => null, 'password1' => null, 'password2' => null, 'password_parse' => null, 'privacy' => null, 'terms' => null, 'country' => null, 'create_account' => null, 'address_more' => null, 'pesel' => null, 'customer_type' => $userConfig->get('change_default_user') || $this->getUser()->hasVatEu() ? UserData::COMPANY_TYPE : UserData::CUSTOMER_TYPE, 'different_delivery' => null, 'description' => null, 'not_professional_purchase' => null, ], $data); } protected function getUserDataDelivery(): array { $userConfig = stConfig::getInstance('stUser'); $data = $this->getRequestParameter('user_data_delivery', []); return array_replace([ 'company' => null, 'vat_number' => null, 'full_name' => null, 'address' => null, 'region' => null, 'code' => null, 'town' => null, 'phone' => null, 'country' => null, 'address_more' => null, 'customer_type' => $userConfig->get('change_default_user') ? UserData::COMPANY_TYPE : UserData::CUSTOMER_TYPE, ], $data); } }