123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994 |
- <?php
- /**
- *
- * PHP Pro Bid $Id$ 1Qeh3xzMW2NC6NPKe63pm407X7W6ifuoOD53vDSNyZk=
- *
- * @link http://www.phpprobid.com
- * @copyright Copyright (c) 2017 Online Ventures Software & CodeCube SRL
- * @license http://www.phpprobid.com/license Commercial License
- *
- * @version 7.10 [rev.7.10.02]
- */
- /**
- * we have the following sub-forms:
- *
- * basic - username, password, email address
- * advanced - date of birth, custom fields
- * address - address related fields (address book table)
- * user - user account details (gateway settings, bank details, etc)
- */
- namespace Ppb\Model\Elements;
- use Cube\Validate,
- Cube\Controller\Front,
- Ppb\Db\Table\Row\User as UserModel,
- Ppb\Db\Table,
- Ppb\Service\Users as UsersService,
- Ppb\Service\Table\PaymentGateways as PaymentGatewaysService,
- Ppb\Service\Table\StoresSubscriptions as StoresSubscriptionsService;
- class User extends AbstractElements
- {
- /**
- *
- * form id
- *
- * @var array
- */
- protected $_formId = array();
- /**
- *
- * user object
- *
- * @var \Ppb\Db\Table\Row\User
- */
- protected $_user;
- /**
- *
- * class constructor
- */
- public function __construct($formId = null)
- {
- parent::__construct();
- $this->setUser();
- $this->_formId = (array)$formId;
- }
- /**
- *
- * get user
- *
- * @return \Ppb\Db\Table\Row\User
- */
- public function getUser()
- {
- return $this->_user;
- }
- /**
- *
- * set user
- *
- * @param \Ppb\Db\Table\Row\User $user
- *
- * @return \Ppb\Model\Elements\User
- */
- public function setUser(UserModel $user = null)
- {
- if ($user === null) {
- $user = Front::getInstance()->getBootstrap()->getResource('user');
- if (!$user instanceof UserModel) {
- $user = null;
- }
- }
- $this->_user = $user;
- return $this;
- }
- /**
- *
- * get form elements
- *
- * @return array
- */
- public function getElements()
- {
- $settings = $this->getSettings();
- $translate = $this->getTranslate();
- if (($user = $this->getUser()) instanceof UserModel) {
- $userId = $user->getData('id');
- $storeActive = $user->getData('store_active');
- $isSeller = $user->isSeller();
- }
- else {
- $userId = null;
- $storeActive = false;
- $isSeller = false;
- }
- $countries = $this->getLocations()->getMultiOptions();
- $states = null;
- if ($this->getData('country') !== null) {
- $states = $this->getLocations()->getMultiOptions(
- $this->getData('country'));
- }
- $customFields = $this->getCustomFields()->getFields(
- array(
- 'type' => 'user',
- 'active' => 1,
- ))->toArray();
- /* create validators */
- $usernameAlpha = new Validate\Alphanumeric();
- $usernameAlpha->setMessage("'%s' contains prohibited characters.");
- $usernameNoRecordExists = new Validate\Db\NoRecordExists(array(
- 'table' => new Table\Users(),
- 'field' => 'username',
- ));
- $usernameNoRecordExists->setMessage($translate->_("The %s '%value%' is not available."));
- $emailNoRecordExists = new Validate\Db\NoRecordExists(array(
- 'table' => new Table\Users(),
- 'field' => 'email',
- ));
- $emailNoRecordExists->setMessage($translate->_("The %s '%value%' has already been registered."));
- $agreeTermsValidator = new Validate\NotEmpty();
- $agreeTermsValidator->setMessage('You must agree to our terms and conditions in order to complete the registration.');
- $birthDateValidator = new Validate\LessThan();
- $birthDateValidator->setMaxValue(date('Y-m-d', time() - ($settings['min_reg_age'] * 365 * 86400)))
- ->setMessage(sprintf($translate->_('You must be at least %s years old in order to be able to register.'),
- $settings['min_reg_age']));
- $paymentGatewaysService = new PaymentGatewaysService();
- $gatewayUserId = ($userId === null) ? true : $userId;
- $gateways = $paymentGatewaysService->getData($gatewayUserId, null, true);
- $gatewayFields = array();
- foreach ($gateways as $gateway) {
- $className = '\\Ppb\\Model\\PaymentGateway\\' . $gateway['name'];
- if (class_exists($className)) {
- /** @var \Ppb\Model\PaymentGateway\AbstractPaymentGateway $gatewayModel */
- $gatewayModel = new $className();
- foreach ((array)$gatewayModel->getElements() as $element) {
- if ($userId && isset($gateway[$element['id']])) {
- $element['value'] = $gateway[$element['id']];
- }
- $gatewayFields[] = $element;
- }
- }
- }
- $storesSubscriptions = new StoresSubscriptionsService();
- $categoriesSelect = $this->getCategories()->getTable()->select()
- ->where('parent_id is null');
- if ($userId) {
- $categoriesSelect->where('user_id is null OR user_id = ?', $userId);
- }
- else {
- $categoriesSelect->where('user_id is null');
- }
- $array = array(
- array(
- 'form_id' => 'global',
- 'id' => 'id',
- 'element' => 'hidden',
- 'bodyCode' => "
- <script type=\"text/javascript\">
- function checkFormFields() {
- if ($('input:radio[name=\"business_account\"]:checked').val() == '1') {
- $('input:text[name=\"company_name\"]').closest('.form-group').show();
- }
- else {
- $('input:text[name=\"company_name\"]').val('').closest('.form-group').hide();
- }
- if ($('input:radio[name=\"quantity_description\"]:checked').val() == '1') {
- $('input:text[name=\"quantity_low_stock\"]').closest('.form-group').show();
- }
- else {
- $('input:text[name=\"quantity_low_stock\"]').val('').closest('.form-group').hide();
- }
- if ($('input:checkbox[name=\"vacation_mode\"]').is(':checked')) {
- $('input[name=\"vacation_mode_return_date\"]').closest('.form-group').show();
- }
- else {
- $('input[name=\"vacation_mode_return_date\"]').val('').closest('.form-group').hide();
- }
- if ($('input:radio[name=\"disable_emails\"]:checked').val() == '1') {
- $('[name=\"disable_seller_notifications\"]').closest('.form-group').hide();
- $('[name=\"disable_offers_notifications\"]').closest('.form-group').hide();
- $('[name=\"disable_messaging_notifications\"]').closest('.form-group').hide();
- }
- else {
- $('[name=\"disable_seller_notifications\"]').closest('.form-group').show();
- $('[name=\"disable_offers_notifications\"]').closest('.form-group').show();
- $('[name=\"disable_messaging_notifications\"]').closest('.form-group').show();
- }
- }
- $(document).ready(function() {
- checkFormFields();
- });
- $(document).on('change', '.field-changeable', function() {
- checkFormFields();
- });
- </script>"
- ),
- array(
- 'form_id' => 'user',
- 'id' => 'business_account',
- 'element' => 'radio',
- 'label' => $this->_('Account Type'),
- 'multiOptions' => array(
- 0 => $translate->_('Personal'),
- 1 => $translate->_('Business'),
- ),
- 'attributes' => array(
- 'class' => 'field-changeable',
- ),
- ),
- array(
- 'form_id' => 'address',
- 'id' => 'address_id',
- 'element' => 'hidden',
- ),
- array(
- 'form_id' => 'address',
- 'subtitle' => $this->_('Address'),
- 'id' => 'name',
- 'element' => '\\Ppb\\Form\\Element\\FullName',
- 'label' => $this->_('Name'),
- 'required' => true,
- 'description' => $this->_('Enter your full name.'),
- 'attributes' => array(
- 'class' => 'form-control input-default',
- 'placeholder' => array(
- 'first' => $translate->_('First Name'),
- 'last' => $translate->_('Last Name'),
- ),
- ),
- 'fieldLabels' => array(
- 'first' => $translate->_('First Name'),
- 'last' => $translate->_('Last Name'),
- ),
- 'validators' => array(
- 'NoHtml',
- ),
- ),
- array(
- 'form_id' => 'address',
- 'id' => 'address',
- 'element' => 'text',
- 'label' => $this->_('Address'),
- 'required' => true,
- 'description' => $this->_('Enter your address.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- ),
- array(
- 'form_id' => 'address',
- 'id' => 'city',
- 'element' => 'text',
- 'label' => $this->_('City'),
- 'required' => true,
- 'description' => $this->_('Enter the city you live in.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- ),
- array(
- 'form_id' => 'address',
- 'id' => 'country',
- 'element' => 'select',
- 'label' => $this->_('Country'),
- 'multiOptions' => $countries,
- 'required' => true,
- 'description' => $this->_('Enter the country you live in.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- 'bodyCode' => "
- <script type=\"text/javascript\">
- function ChangeState() {
- var countryId = $('[name=\"country\"]').val();
- $.post(
- '" . $this->getView()->url(array('module' => 'app', 'controller' => 'async', 'action' => 'select-location')) . "',
- {
- id: $('[name=\"country\"]').val(),
- name: 'state'
- },
- function (data) {
- var div = $('[name=\"state\"]').closest('div');
- $('[name=\"state\"]').remove();
- div.prepend(data);
- }
- );
- }
- $(document).on('change', '[name=\"country\"]', function() {
- ChangeState();
- });
- </script>"
- ),
- array(
- 'form_id' => 'address',
- 'id' => 'state',
- 'element' => (count($states) > 0) ? 'select' : 'text',
- 'label' => $this->_('State/County'),
- 'multiOptions' => $states,
- 'required' => true,
- 'description' => $this->_('Enter the state/county you live in.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- ),
- array(
- 'form_id' => 'address',
- 'id' => 'zip_code',
- 'element' => 'text',
- 'label' => $this->_('Zip/Post Code'),
- 'required' => true,
- 'description' => $this->_('Enter your zip/post code.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- ),
- array(
- 'form_id' => 'address',
- 'id' => 'phone',
- 'element' => 'text',
- 'label' => $this->_('Phone'),
- 'description' => $this->_('Enter your phone number.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- 'required' => true,
- 'validators' => array(
- 'Phone',
- ),
- ),
- array(
- 'form_id' => 'advanced',
- 'id' => 'birthdate',
- 'element' => ($settings['min_reg_age'] > 0) ? '\\Ppb\\Form\\Element\\DateTime' : false,
- 'label' => $this->_('Date of Birth'),
- 'description' => $this->_('Enter your birthdate.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- 'required' => true,
- 'validators' => array(
- $birthDateValidator,
- ),
- 'customData' => array(
- 'formData' => array(
- 'format' => '"YYYY-MM-DD"',
- 'maxDate' => 'new Date()',
- 'useCurrent' => 'false',
- 'viewMode' => '"decades"',
- ),
- ),
- ),
- array(
- 'form_id' => 'user',
- 'subtitle' => $this->_('Additional Information'),
- 'id' => 'company_name',
- 'element' => 'text',
- 'label' => $this->_('Company Name'),
- 'description' => $this->_('Enter your company\'s name.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- 'required' => ($this->getData('business_account') == 1) ? true : false,
- ),
- array(
- 'form_id' => 'user',
- 'id' => 'bank_details',
- 'element' => 'textarea',
- 'label' => $this->_('Bank Details'),
- 'description' => $this->_('Enter your bank account details (optional).'),
- 'attributes' => array(
- 'rows' => 6,
- 'class' => 'form-control',
- ),
- ),
- array(
- 'form_id' => 'user',
- 'id' => 'sale_invoices_content',
- 'element' => 'textarea',
- 'label' => $this->_('Sales Invoices Custom Content'),
- 'description' => $this->_('Enter any custom content you might want to add on your sale invoices.'),
- 'attributes' => array(
- 'rows' => 4,
- 'class' => 'form-control',
- ),
- 'validators' => array(
- 'NoHtml',
- ),
- ),
- array(
- 'form_id' => array('basic', 'admin'),
- 'subtitle' => $this->_('Account Details'),
- 'id' => 'username',
- 'element' => 'text',
- 'label' => $this->_('Username'),
- 'description' => $this->_('Choose a username for your account.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- 'required' => true,
- 'validators' => array(
- $usernameAlpha,
- $usernameNoRecordExists,
- ),
- ),
- array(
- 'form_id' => 'admin',
- 'id' => 'role',
- 'element' => 'select',
- 'label' => 'Role',
- 'description' => $this->_('Choose a role for the account.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- 'multiOptions' => UsersService::getAdminRoles(),
- ),
- array(
- 'form_id' => array('basic', 'admin'),
- 'id' => 'email',
- 'element' => 'text',
- 'label' => $this->_('Email'),
- 'description' => $this->_('Enter your email address.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- 'required' => true,
- 'validators' => array(
- 'Email',
- $emailNoRecordExists,
- ),
- ),
- array(
- 'form_id' => array('basic', 'admin'),
- 'id' => 'password',
- 'element' => 'password',
- 'label' => $this->_('Password'),
- 'description' => $this->_('Create a password for your account.'),
- 'suffix' => $this->_('(minimum 6 characters)'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- 'required' => true,
- 'validators' => array(
- array('StringLength', array(6, null)),
- ),
- ),
- array(
- 'form_id' => array('basic', 'admin'),
- 'id' => 'password_confirm',
- 'element' => 'password',
- 'label' => $this->_('Confirm Password'),
- 'description' => $this->_('Type your password again to confirm.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- ),
- array(
- 'form_id' => array('basic'),
- 'id' => 'recaptcha',
- 'element' => ($settings['enable_recaptcha'] && $settings['recaptcha_registration']) ? '\\Ppb\\Form\\Element\\ReCaptcha' : false,
- 'label' => 'Captcha Code',
- ),
- array(
- 'form_id' => 'basic',
- 'id' => 'newsletter_subscription',
- 'element' => 'checkbox',
- 'multiOptions' => array(
- 1 => $translate->_('Subscribe To Newsletter'),
- ),
- ),
- array(
- 'form_id' => 'basic',
- 'id' => 'agree_terms',
- 'element' => ($settings['enable_registration_terms']) ? 'checkbox' : false,
- 'label' => $this->_('Terms and Conditions'),
- 'multiOptions' => array(
- 1 => sprintf(
- $translate->_('I have read and agree to the site\'s '
- . '<a href="%s" target="_blank">Terms and Conditions</a> and <a href="%s" target="_blank">Privacy Policy</a>.'),
- $this->getView()->url($settings['registration_terms_link']),
- $this->getView()->url($settings['registration_privacy_link'])),
- ),
- 'validators' => array(
- $agreeTermsValidator,
- ),
- ),
- /**
- * --------------
- * STORE SETUP
- * --------------
- */
- array(
- 'form_id' => 'store_setup',
- 'subtitle' => $this->_('Store Subscription'),
- 'id' => 'store_subscription_id',
- 'element' => (!$storeActive || $this->getData('store_subscription_id')) ? 'radio' : 'hidden',
- 'label' => $this->_('Choose Subscription'),
- 'description' => $this->_('Choose a subscription for your store.'),
- 'multiOptions' => $storesSubscriptions->getMultiOptions(),
- 'required' => (!$storeActive || $this->getData('store_subscription_id')) ? true : false,
- 'attributes' => ($storeActive ?
- array('onchange' => 'javascript:storeSubscriptionChangeAlert();') : array()),
- 'bodyCode' => "
- <script type=\"text/javascript\">
- function storeSubscriptionChangeAlert() {
- bootbox.alert('" . $translate->_('Warning: changing your store subscription type will disable your current active subscription!') . "')
- }
- </script > ",
- ),
- array(
- 'form_id' => 'store_setup',
- 'subtitle' => $this->_('Store Settings'),
- 'id' => 'store_name',
- 'element' => 'text',
- 'label' => $this->_('Store Name'),
- 'description' => $this->_('Enter the name of your store.'),
- 'required' => true,
- 'validators' => array(
- 'NoHtml',
- array('StringLength', array(null, 255)),
- ),
- 'attributes' => array(
- 'class' => 'form-control input-xlarge',
- ),
- ),
- array(
- 'form_id' => 'store_setup',
- 'id' => 'store_description',
- 'element' => '\\Ppb\\Form\\Element\\Wysiwyg',
- 'label' => $this->_('Store Description'),
- 'description' => $this->_('Enter a description for your store.'),
- 'required' => true,
- 'attributes' => array(
- 'class' => 'form-control',
- ),
- ),
- array(
- 'form_id' => 'store_setup',
- 'id' => 'store_logo_path',
- 'element' => '\\Ppb\\Form\\Element\\MultiUpload',
- 'label' => $this->_('Store Logo'),
- 'description' => $this->_('Upload a logo for your store.'),
- 'required' => true,
- 'customData' => array(
- 'buttonText' => $translate->_('Select Logo'),
- 'acceptFileTypes' => '/(\.|\/)(gif|jpe?g|png)$/i',
- 'formData' => array(
- 'fileSizeLimit' => 2000000,
- 'uploadLimit' => 1,
- ),
- ),
- ),
- array(
- 'form_id' => 'store_setup',
- 'id' => 'store_category_id',
- 'element' => '\\Ppb\\Form\\Element\\Category',
- 'label' => $this->_('Store Category'),
- 'description' => $this->_('Select a category where your store would be best included in.'),
- 'attributes' => array(
- 'data-no-refresh' => 'true'
- ),
- 'required' => true,
- ),
- array(
- 'form_id' => 'store_setup',
- 'id' => 'store_meta_description',
- 'element' => 'textarea',
- 'label' => $this->_('Store Meta Description'),
- 'description' => $this->_('(Recommended) This meta description will tell search engine details about your store. '
- . 'Your description should be no longer than 155 characters (including spaces).'),
- 'validators' => array(
- 'NoHtml',
- ),
- 'attributes' => array(
- 'rows' => '4',
- 'class' => 'form-control',
- ),
- ),
- array(
- 'form_id' => 'store_setup',
- 'id' => 'store_categories',
- 'subtitle' => $this->_('Custom Categories'),
- 'element' => '\\Ppb\\Form\\Element\\ChznSelect',
- 'label' => $this->_('Select Categories'),
- 'description' => $this->_('Choose which categories you want to use for your store, or leave empty to use the site\'s default categories.'),
- 'multiOptions' => $this->getCategories()->getMultiOptions($categoriesSelect),
- 'attributes' => array(
- 'style' => 'width: 350px;',
- 'data-placeholder' => $translate->_('Choose Categories...'),
- ),
- 'multiple' => true,
- ),
- /**
- * --------------
- * STORE PAGES
- * --------------
- */
- array(
- 'form_id' => 'store_pages',
- 'subtitle' => 'Store Pages',
- 'id' => 'store_about',
- 'element' => '\\Ppb\\Form\\Element\\Wysiwyg',
- 'label' => $this->_('About Page'),
- 'description' => $this->_('(optional) Enter content for the store about page.'),
- 'attributes' => array(
- 'class' => 'form-control',
- ),
- ),
- array(
- 'form_id' => 'store_pages',
- 'id' => 'store_shipping_information',
- 'element' => '\\Ppb\\Form\\Element\\Wysiwyg',
- 'label' => $this->_('Shipping Information'),
- 'description' => $this->_('(optional) Enter content for the store shipping information page.'),
- 'attributes' => array(
- 'class' => 'form-control',
- ),
- ),
- array(
- 'form_id' => 'store_pages',
- 'id' => 'store_company_policies',
- 'element' => '\\Ppb\\Form\\Element\\Wysiwyg',
- 'label' => $this->_('Company Policies'),
- 'description' => $this->_('(optional) Enter content for the store company policies page.'),
- 'attributes' => array(
- 'class' => 'form-control',
- ),
- ),
- /**
- * --------------
- * GLOBAL SETTINGS
- * --------------
- */
- array(
- 'form_id' => 'global_settings',
- 'id' => 'enable_public_questions',
- 'element' => ($settings['enable_public_questions']) ? 'checkbox' : false,
- 'label' => $this->_('Accept Public Questions'),
- 'description' => $this->_('Check the above checkbox to allow site users to post public questions on your listings.'),
- 'multiOptions' => array(
- 1 => null,
- ),
- ),
- array(
- 'form_id' => 'global_settings',
- 'id' => 'enable_force_payment',
- 'element' => ($settings['enable_force_payment']) ? 'checkbox' : false,
- 'label' => $this->_('Enable Force Payment'),
- 'multiOptions' => array(
- 1 => null,
- ),
- 'description' => sprintf(
- $translate->_('If this option is enabled, sales will automatically cancelled unless marked as paid within %s.'),
- $this->_secondsToTime($settings['force_payment_limit'] * 60)),
- ),
- array(
- 'form_id' => 'global_settings',
- 'id' => 'quantity_description',
- 'element' => ($settings['enable_products']) ? 'radio' : false,
- 'label' => $this->_('Products Quantity Display'),
- 'multiOptions' => array(
- 0 => $translate->_('Numbers'),
- 1 => $translate->_('Text (In Stock, Low Stock, Out of Stock)'),
- ),
- 'attributes' => array(
- 'class' => 'field-changeable',
- ),
- 'description' => $this->_('Select how to display the quantity field for products.'),
- ),
- array(
- 'form_id' => 'global_settings',
- 'id' => 'quantity_low_stock',
- 'element' => 'text',
- 'label' => $this->_('Low Stock Threshold'),
- 'description' => $this->_('If the quantity of an item is lower than this value, the "low stock" message will be displayed.'),
- 'required' => ($this->getData('quantity_description') == 1) ? true : false,
- 'attributes' => array(
- 'class' => 'form-control input-mini',
- ),
- 'validators' => array(
- 'Digits',
- array('GreaterThan', array(1, true)),
- ),
- ),
- array(
- 'form_id' => 'global_settings',
- 'id' => 'enable_tax',
- 'element' => ($settings['enable_tax_listings']) ? 'checkbox' : false,
- 'label' => $this->_('Enable Tax on Listings'),
- 'multiOptions' => array(
- 1 => null,
- ),
- 'description' => $this->_('Check the above checkbox if you wish to be able to apply tax for your listings.'),
- ),
- array(
- 'form_id' => 'global_settings',
- 'id' => 'tax_type',
- 'element' => ($settings['enable_tax_listings']) ? 'select' : false,
- 'label' => $this->_('Tax Type'),
- 'description' => $this->_('Select the tax that will be applied for your listings.'),
- 'multiOptions' => $this->getTaxTypes()->getMultiOptions(),
- 'attributes' => array(
- 'class' => 'form-control input-large',
- ),
- ),
- array(
- 'form_id' => 'global_settings',
- 'id' => 'visitors_counter',
- 'element' => 'checkbox',
- 'label' => $this->_('Visitors Counter'),
- 'multiOptions' => array(
- 1 => null,
- ),
- 'description' => $this->_('Check the above checkbox to display the "Item Viewed" box on the listings details pages'),
- ),
- array(
- 'form_id' => 'global_settings',
- 'id' => 'listing_watched_by_box',
- 'element' => 'checkbox',
- 'label' => $this->_('Display "Listing watched by" Box'),
- 'multiOptions' => array(
- 1 => null,
- ),
- 'description' => $this->_('Check the above checkbox to display the "Listing watched by" box on the listing details pages.'),
- ),
- array(
- 'form_id' => 'global_settings',
- 'id' => 'limit_bids_per_user',
- 'element' => ($settings['enable_auctions'] && $settings['enable_limit_bids']) ? 'text' : false,
- 'label' => $this->_('Limit Number of Bids / Offers per User'),
- 'description' => $this->_('Enter a positive value if you want to limit the number of bids (without proxy bids) and offers a user can make on an auction, '
- . 'or leave empty to disable this feature.'),
- 'attributes' => array(
- 'class' => 'form-control input-mini',
- ),
- 'validators' => array(
- 'Digits',
- ),
- ),
- array(
- 'form_id' => 'global_settings',
- 'id' => 'show_make_offer_ranges',
- 'element' => ($settings['enable_make_offer'] && $settings['show_make_offer_ranges']) ? 'checkbox' : false,
- 'label' => $this->_('Show Offer Ranges'),
- 'multiOptions' => array(
- 1 => null,
- ),
- 'description' => $this->_('With this option enabled, the accepted offer ranges you set on listings that have "Make Offer" enabled will be displayed.'),
- ),
- array(
- 'form_id' => 'global_settings',
- 'id' => 'automatic_digital_downloads',
- 'element' => ($settings['digital_downloads_max']) ? 'radio' : false,
- 'label' => $this->_('Automatic Download Links Activation'),
- 'multiOptions' => array(
- 0 => $translate->_('Yes'),
- -1 => $translate->_('No'),
- ),
- 'description' => $this->_('Select if you wish to automatically activate download links when sales are paid for using direct payment methods.<br>'
- . 'Links can also be activated manually from the "My Sales" page.'),
- ),
- array(
- 'form_id' => 'global_settings',
- 'id' => 'vacation_mode',
- 'element' => 'checkbox',
- 'label' => $this->_('Vacation Mode'),
- 'multiOptions' => array(
- 1 => null,
- ),
- 'attributes' => array(
- 'class' => 'field-changeable',
- ),
- 'description' => $this->_('If the checkbox above is checked, a message will appear on all your listings which will let visitors know that you are currently on vacation.'),
- ),
- array(
- 'form_id' => 'global_settings',
- 'id' => 'vacation_mode_return_date',
- 'element' => '\\Ppb\\Form\\Element\\DateTime',
- 'label' => $this->_('Return Date'),
- 'description' => $this->_('(Optional) Enter a vacation return date.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- 'customData' => array(
- 'formData' => array(
- 'format' => '"YYYY-MM-DD"',
- 'minDate' => 'new Date()',
- 'useCurrent' => 'false',
- 'showClear' => 'true',
- ),
- ),
- ),
- /**
- * --------------
- * EMAIL NOTIFICATIONS
- * --------------
- */
- array(
- 'form_id' => 'email_notifications',
- 'id' => 'disable_emails',
- 'element' => 'radio',
- 'label' => $this->_('Email Notifications'),
- 'description' => $this->_('Choose whether to receive email notifications from the website.<br>'
- . 'Important emails regarding account status and sale/purchase notifications would still be sent.'),
- 'attributes' => array(
- 'class' => 'field-changeable',
- ),
- 'multiOptions' => array(
- 0 => $translate->_('Enabled'),
- 1 => $translate->_('Disabled'),
- ),
- ),
- array(
- 'form_id' => 'email_notifications',
- 'id' => 'disable_seller_notifications',
- 'element' => ($isSeller) ? 'radio' : false,
- 'label' => $this->_('Seller Notifications'),
- 'description' => $this->_('These notifications include closed, relisted, no sale, '
- . 'as well as approved and suspended listings notifications.'),
- 'multiOptions' => array(
- 0 => $translate->_('Enabled'),
- 1 => $translate->_('Disabled'),
- ),
- ),
- array(
- 'form_id' => 'email_notifications',
- 'id' => 'disable_offers_notifications',
- 'element' => ($settings['enable_make_offer']) ? 'radio' : false,
- 'label' => $this->_('Offers Notifications'),
- 'description' => $this->_('These notifications include offers module related email notifications: '
- . 'new offer, counter offer, offer accepted, offer declined, offer withdrawn.'),
- 'multiOptions' => array(
- 0 => $translate->_('Enabled'),
- 1 => $translate->_('Disabled'),
- ),
- ),
- array(
- 'form_id' => 'email_notifications',
- 'id' => 'disable_messaging_notifications',
- 'element' => 'radio',
- 'label' => $this->_('Messaging Notifications'),
- 'description' => $this->_('These notifications include emails sent to notify users on new messages '
- . 'received on the website.'),
- 'multiOptions' => array(
- 0 => $translate->_('Enabled'),
- 1 => $translate->_('Disabled'),
- ),
- ),
- /**
- * --------------
- * FORGOT USERNAME / PASSWORD FORMS
- * --------------
- */
- array(
- 'form_id' => 'forgot-password',
- 'id' => 'username',
- 'element' => 'text',
- 'label' => $this->_('Username'),
- 'description' => $this->_('Enter your username.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- 'required' => true,
- 'validators' => array(
- $usernameAlpha,
- ),
- ),
- array(
- 'form_id' => array('forgot-username', 'forgot-password'),
- 'id' => 'email',
- 'element' => 'text',
- 'label' => $this->_('Email'),
- 'description' => $this->_('Enter the email address you have used for registering your account.'),
- 'attributes' => array(
- 'class' => 'form-control input-medium',
- ),
- 'required' => true,
- 'validators' => array(
- 'Email',
- ),
- ),
- );
- // add custom registration fields
- foreach ($customFields as $key => $customField) {
- $customFields[$key]['form_id'] = 'advanced';
- $customFields[$key]['id'] = 'custom_field_' . $customField['id'];
- if (in_array($customField['element'], array('text', 'select', 'textarea'))) {
- $attributes = unserialize($customField['attributes']);
- $customFields[$key]['attributes'] = serialize($attributes);
- }
- }
- array_splice($array, 10, 0, $customFields);
- // add payment gateways related fields (direct payment)
- foreach ($gatewayFields as $key => $gatewayField) {
- $gatewayFields[$key]['form_id'] = 'payment-gateways';
- if (empty($gatewayField)) {
- unset($gatewayFields[$key]);
- }
- }
- array_splice($array, (19 + count($customFields)), 0, $gatewayFields);
- return $array;
- }
- protected function _secondsToTime($seconds)
- {
- $translate = $this->getTranslate();
- $output = array();
- $date = new \DateTime("@$seconds");
- $interval = $date->diff(new \DateTime('@0'));
- $days = $interval->d;
- $hours = $interval->h;
- $minutes = $interval->m;
- if ($days > 0) {
- $output[] = $days . ' ' . (($days > 1) ? $translate->_('days') : $translate->_('day'));
- }
- if ($hours > 0) {
- $output[] = $hours . ' ' . (($hours > 1) ? $translate->_('hours') : $translate->_('hour'));
- }
- if ($minutes > 0) {
- $output[] = $minutes . ' ' . (($minutes > 1) ? $translate->_('minutes') : $translate->_('minute'));
- }
- return implode(', ', $output);
- }
- }
|