public function processRequest($request) { $db = new WPAM_Data_DataAccess(); $affiliateFields = $db->getAffiliateFieldRepository()->loadMultipleBy(array('enabled' => true), array('order' => 'asc')); if (isset($request['action']) && $request['action'] == 'saveInfo') { $validator = new WPAM_Validation_Validator(); $validator->addValidator('ddBountyType', new WPAM_Validation_SetValidator(array('fixed', 'percent'))); if ($request['ddBountyType'] === 'fixed') { $validator->addValidator('txtBountyAmount', new WPAM_Validation_MoneyValidator()); } else { if ($request['ddBountyType'] === 'percent') { $validator->addValidator('txtBountyAmount', new WPAM_Validation_NumberValidator()); } } $affiliateHelper = new WPAM_Util_AffiliateFormHelper(); $vr = $affiliateHelper->validateForm($validator, $request, $affiliateFields); if ($vr->getIsValid()) { $model = $affiliateHelper->getNewAffiliate(); $affiliateHelper->setModelFromForm($model, $affiliateFields, $request); $affiliateHelper->setPaymentFromForm($model, $request); //send email etc. $userHandler = new WPAM_Util_UserHandler(); if (get_option(WPAM_PluginConfig::$AutoAffiliateApproveIsEnabledOption) == 1) { $userHandler->AutoapproveAffiliate($model, $request['ddBountyType'], $request['txtBountyAmount']); } else { $userHandler->approveAffiliate($model, $request['ddBountyType'], $request['txtBountyAmount'], false); } return new WPAM_Pages_TemplateResponse('admin/affiliate_new_success'); } else { return $this->getForm($affiliateFields, $request, $vr); } } return $this->getForm($affiliateFields, $request); }
public function processRequest($request) { $db = new WPAM_Data_DataAccess(); if (isset($request['viewDetail']) && is_numeric($request['viewDetail'])) { $affiliateFields = $db->getAffiliateFieldRepository()->loadMultipleBy(array('enabled' => true), array('order' => 'asc')); $id = (int) $request['viewDetail']; $model = $db->getAffiliateRepository()->load($id); if ($model == null) { wp_die("Invalid affiliate ID."); } if (isset($request['action']) && $request['action'] == 'saveInfo') { $validator = new WPAM_Validation_Validator(); //validate bounty type & amount if they're in the appropriate status if (!$model->isPending() && !$model->isBlocked() && !$model->isDeclined()) { $validator->addValidator('ddBountyType', new WPAM_Validation_SetValidator(array('fixed', 'percent'))); if ($request['ddBountyType'] === 'fixed') { $validator->addValidator('txtBountyAmount', new WPAM_Validation_MoneyValidator()); } else { if ($request['ddBountyType'] === 'percent') { $validator->addValidator('txtBountyAmount', new WPAM_Validation_NumberValidator()); } } $validator->addValidator('ddPaymentMethod', new WPAM_Validation_SetValidator(array('check', 'paypal'))); if ($request['ddPaymentMethod'] === 'paypal') { $validator->addValidator('txtPaypalEmail', new WPAM_Validation_EmailValidator()); } } $affiliateHelper = new WPAM_Util_AffiliateFormHelper(); $vr = $affiliateHelper->validateForm($validator, $request, $affiliateFields, TRUE); if ($vr->getIsValid()) { $affiliateHelper->setModelFromForm($model, $affiliateFields, $request); $affiliateHelper->setPaymentFromForm($model, $request); $db->getAffiliateRepository()->update($model); } else { return $this->getDetailForm($affiliateFields, $model, $request, $vr); } } return $this->getDetailForm($affiliateFields, $model, $request); } else { //Show all the affiliates list. //Lets include the affiliates_list.php file $response = new WPAM_Pages_TemplateResponse('admin/affiliates_list'); } return $response; }
protected function validateForm($request) { $validator = new WPAM_Validation_Validator(); $validator->addValidator('ddPaymentMethod', new WPAM_Validation_SetValidator(array('paypal', 'check'))); if ($request['ddPaymentMethod'] === 'check') { $validator->addValidator('txtCheckTo', new WPAM_Validation_StringValidator(1)); } else { if ($request['ddPaymentMethod'] === 'paypal') { $validator->addValidator('txtPaypalEmail', new WPAM_Validation_EmailValidator()); } } return $validator->validate($request); }
protected function doFormSubmit($request) { $validator = new WPAM_Validation_Validator(); if (isset($request['AffGeneralSettings'])) { $validator->addValidator('txtMinimumPayout', new WPAM_Validation_MoneyValidator()); $validator->addValidator('txtTnc', new WPAM_Validation_StringValidator(1)); $validator->addValidator('txtCookieExpire', new WPAM_Validation_NumberValidator()); } //#61 allow these to be unset/null if (!empty($request['txtEmailName'])) { $validator->addValidator('txtEmailName', new WPAM_Validation_StringValidator(1)); } if (!empty($request['txtEmailAddress'])) { $validator->addValidator('txtEmailAddress', new WPAM_Validation_EmailValidator()); } if (isset($request['chkEnablePaypalMassPay'])) { $validator->addValidator('txtPaypalAPIUser', new WPAM_Validation_StringValidator(1)); $validator->addValidator('txtPaypalAPIPassword', new WPAM_Validation_StringValidator(1)); $validator->addValidator('txtPaypalAPISignature', new WPAM_Validation_StringValidator(1)); } $vr = $validator->validate($request); if ($vr->getIsValid()) { $db = new WPAM_Data_DataAccess(); if (isset($request['AffGeneralSettings'])) { update_option(WPAM_PluginConfig::$MinPayoutAmountOption, $request['txtMinimumPayout']); update_option(WPAM_PluginConfig::$TNCOptionOption, $request['txtTnc']); update_option(WPAM_PluginConfig::$CookieExpireOption, $request['txtCookieExpire']); update_option(WPAM_PluginConfig::$EmailNameOption, $request['txtEmailName']); update_option(WPAM_PluginConfig::$EmailAddressOption, $request['txtEmailAddress']); update_option(WPAM_PluginConfig::$AffBountyType, $request['affBountyType']); update_option(WPAM_PluginConfig::$AffBountyAmount, $request['affBountyAmount']); update_option(WPAM_PluginConfig::$AffCurrencySymbol, $request['affCurrencySymbol']); update_option(WPAM_PluginConfig::$AffCurrencyCode, $request['affCurrencyCode']); if (isset($request['autoaffapprove'])) { update_option(WPAM_PluginConfig::$AutoAffiliateApproveIsEnabledOption, 1); } else { update_option(WPAM_PluginConfig::$AutoAffiliateApproveIsEnabledOption, 0); } if (isset($request['chkImpressions'])) { update_option(WPAM_PluginConfig::$AffEnableImpressions, 1); } else { update_option(WPAM_PluginConfig::$AffEnableImpressions, 0); } if (isset($request['enable_debug'])) { update_option(WPAM_PluginConfig::$AffEnableDebug, 1); } else { update_option(WPAM_PluginConfig::$AffEnableDebug, 0); } } if (isset($request['AffPaymentSettings'])) { if (isset($request['chkEnablePaypalMassPay'])) { update_option(WPAM_PluginConfig::$PaypalMassPayEnabledOption, 1); update_option(WPAM_PluginConfig::$PaypalAPIUserOption, $request['txtPaypalAPIUser']); update_option(WPAM_PluginConfig::$PaypalAPIPasswordOption, $request['txtPaypalAPIPassword']); update_option(WPAM_PluginConfig::$PaypalAPISignatureOption, $request['txtPaypalAPISignature']); update_option(WPAM_PluginConfig::$PaypalAPIEndPointOption, $request['ddPaypalAPIEndPoint']); } else { update_option(WPAM_PluginConfig::$PaypalMassPayEnabledOption, 0); } } if (isset($request['AffMsgSettings'])) { foreach ($request['messages'] as $message) { $messageModel = $db->getMessageRepository()->loadBy(array('name' => $message['name'])); if ($messageModel != NULL) { $messageModel->content = $message['content']; $db->getMessageRepository()->update($messageModel); } } } if (isset($request['AffRegSettings'])) { if (isset($request['chkPayoutMethodPaypal'])) { update_option(WPAM_PluginConfig::$PayoutMethodPaypalIsEnabledOption, 1); } else { update_option(WPAM_PluginConfig::$PayoutMethodPaypalIsEnabledOption, 0); } if (isset($request['chkPayoutMethodCheck'])) { update_option(WPAM_PluginConfig::$PayoutMethodCheckIsEnabledOption, 1); } else { update_option(WPAM_PluginConfig::$PayoutMethodCheckIsEnabledOption, 0); } $affiliateFieldRepository = $db->getAffiliateFieldRepository(); $affiliateFieldRepository->delete(array('type' => 'custom')); $order = 0; foreach ($request['field'] as $fieldName => $params) { if ($params['type'] === 'custom') { $field = new WPAM_Data_Models_AffiliateFieldModel(); $field->type = 'custom'; $field->databaseField = $fieldName; $field->fieldType = $params['fieldType']; $field->length = $params['maxLength']; $field->name = $params['displayName']; } else { $field = $affiliateFieldRepository->loadby(array('databaseField' => $fieldName)); } $field->order = $order++; //#43 email is required (but not submitted b/c it's disabled on the form) if ($fieldName == 'email') { $field->enabled = 1; $field->required = 1; } else { $field->enabled = isset($params['enabled']) ? 1 : 0; $field->required = isset($params['required']) ? 1 : 0; } if ($params['type'] === 'custom') { $affiliateFieldRepository->insert($field); } else { $affiliateFieldRepository->update($field); } } } if (isset($request['AffPagesSettings'])) { update_option(WPAM_PluginConfig::$AffLoginPageURL, $request['affLoginPage']); } return $this->getSettingsForm(NULL, "Settings updated."); } //else return $this->getSettingsForm($request, NULL, $vr); }
protected function doCreativeSubmit($request) { $validator = new WPAM_Validation_Validator(); //#23 before getting media library images, upload an image file if there is one $has_new_image = isset($_FILES['fileImageNew']) && trim($_FILES['fileImageNew']['name']) != ''; if ($has_new_image) { $mimes = array('jpg|jpeg|jpe' => 'image/jpeg', 'gif' => 'image/gif', 'png' => 'image/png', 'bmp' => 'image/bmp', 'tif|tiff' => 'image/tiff'); $file = wp_handle_upload($_FILES['fileImageNew'], array('mimes' => $mimes, 'test_form' => false)); if (isset($file['error'])) { $validator->addError(new WPAM_Validation_ValidatorError('fileImageNew', sprintf(__('Image Upload Error: %s', 'wpam'), $file['error']))); } else { //successfully uploaded an image $object = array('post_title' => basename($file['url']), 'post_content' => $file['url'], 'post_mime_type' => $file['type'], 'guid' => $file['url']); // Save the attachment $attachment_id = wp_insert_attachment($object, $file['file']); //make it selected in the media library dropdown $has_new_image = false; $request['ddFileImage'] = $attachment_id; } } $db = new WPAM_Data_DataAccess(); $images = $db->getWordPressRepository()->getAllImageAttachments(); $imageIds = array(); foreach ($images as $image) { $imageIds[] = $image->ID; } $validator->addValidator('txtName', new WPAM_Validation_StringValidator(1)); //$validator->addValidator('ddLandingPage', new WPAM_Validation_SetValidator(array('index','products'))); $validator->addValidator('ddType', new WPAM_Validation_SetValidator(array('image', 'text'))); if ($request['ddType'] === 'image' && !$has_new_image) { $validator->addValidator('ddFileImage', new WPAM_Validation_SetValidator($imageIds)); } else { if ($request['ddType'] === 'text') { $validator->addValidator('txtLinkText', new WPAM_Validation_StringValidator(1)); } } $vr = $validator->validate($request); if ($vr->getIsValid()) { $creativesRepo = $db->getCreativesRepository(); if ($request['action'] === 'edit') { $model = $creativesRepo->load($request['creativeId']); } else { $model = new WPAM_Data_Models_CreativeModel(); $model->dateCreated = time(); //#50 new creatives start as 'inactive' $model->status = 'active'; } $model->type = $request['ddType']; if ($model->type === 'image') { $model->imagePostId = $request['ddFileImage']; $model->altText = $request['txtImageAltText']; } else { if ($model->type === 'text') { $model->linkText = $request['txtLinkText']; $model->altText = $request['txtAltText']; } else { wp_die(__('Insert failed: Bad creative type.', 'wpam')); } } $model->slug = $request['txtSlug']; $model->name = $request['txtName']; $db = new WPAM_Data_DataAccess(); $response = new WPAM_Pages_TemplateResponse('admin/creatives_detail'); if ($request['action'] === 'edit') { $response->viewData['updateMessage'] = __('Creative Updated.', 'wpam'); $creativesRepo->update($model); } else { if ($request['action'] === 'new') { $id = $creativesRepo->insert($model); $model->creativeId = $id; $response->viewData['updateMessage'] = __('Creative ... created.', 'wpam'); } else { wp_die(__('Insert failed: invalid creative update mechanism.', 'wpam')); } } $response->viewData['request'] = $request; $response->viewData['creative'] = $model; return $response; } else { return $this->getCreativeUpdateForm($request, $vr); } }
protected function doFormSubmit($request) { $validator = new WPAM_Validation_Validator(); if (isset($request['AffGeneralSettings'])) { $validator->addValidator('txtMinimumPayout', new WPAM_Validation_MoneyValidator()); $validator->addValidator('txtCookieExpire', new WPAM_Validation_NumberValidator()); } if (isset($request['AffRegSettings'])) { //$validator->addValidator('txtTnc', new WPAM_Validation_StringValidator(1)); } //#61 allow these to be unset/null if (!empty($request['txtEmailName'])) { $validator->addValidator('txtEmailName', new WPAM_Validation_StringValidator(1)); } if (!empty($request['txtEmailAddress'])) { $validator->addValidator('txtEmailAddress', new WPAM_Validation_EmailValidator()); } if (isset($request['chkEnablePaypalMassPay'])) { $validator->addValidator('txtPaypalAPIUser', new WPAM_Validation_StringValidator(1)); $validator->addValidator('txtPaypalAPIPassword', new WPAM_Validation_StringValidator(1)); $validator->addValidator('txtPaypalAPISignature', new WPAM_Validation_StringValidator(1)); } $vr = $validator->validate($request); if ($vr->getIsValid()) { $db = new WPAM_Data_DataAccess(); if (isset($request['AffGeneralSettings'])) { //General settings options submitted update_option(WPAM_PluginConfig::$MinPayoutAmountOption, $request['txtMinimumPayout']); update_option(WPAM_PluginConfig::$CookieExpireOption, $request['txtCookieExpire']); update_option(WPAM_PluginConfig::$EmailNameOption, $request['txtEmailName']); update_option(WPAM_PluginConfig::$EmailAddressOption, $request['txtEmailAddress']); update_option(WPAM_PluginConfig::$AffBountyType, $request['affBountyType']); update_option(WPAM_PluginConfig::$AffBountyAmount, $request['affBountyAmount']); update_option(WPAM_PluginConfig::$AffCurrencySymbol, $request['affCurrencySymbol']); update_option(WPAM_PluginConfig::$AffCurrencyCode, $request['affCurrencyCode']); if (isset($request['autoaffapprove'])) { update_option(WPAM_PluginConfig::$AutoAffiliateApproveIsEnabledOption, 1); } else { update_option(WPAM_PluginConfig::$AutoAffiliateApproveIsEnabledOption, 0); } if (isset($request['doNotRecordZeroAmtCommission'])) { update_option(WPAM_PluginConfig::$AffdoNotRecordZeroAmtCommission, 1); } else { update_option(WPAM_PluginConfig::$AffdoNotRecordZeroAmtCommission, 0); } if (isset($request['chkImpressions'])) { update_option(WPAM_PluginConfig::$AffEnableImpressions, 1); } else { update_option(WPAM_PluginConfig::$AffEnableImpressions, 0); } if (isset($request['enable_debug'])) { update_option(WPAM_PluginConfig::$AffEnableDebug, 1); } else { update_option(WPAM_PluginConfig::$AffEnableDebug, 0); } } if (isset($request['AffPaymentSettings'])) { //Payment settings options submitted if (isset($request['chkEnablePaypalMassPay'])) { update_option(WPAM_PluginConfig::$PaypalMassPayEnabledOption, 1); update_option(WPAM_PluginConfig::$PaypalAPIUserOption, $request['txtPaypalAPIUser']); update_option(WPAM_PluginConfig::$PaypalAPIPasswordOption, $request['txtPaypalAPIPassword']); update_option(WPAM_PluginConfig::$PaypalAPISignatureOption, $request['txtPaypalAPISignature']); update_option(WPAM_PluginConfig::$PaypalAPIEndPointOption, $request['ddPaypalAPIEndPoint']); } else { update_option(WPAM_PluginConfig::$PaypalMassPayEnabledOption, 0); } } if (isset($request['AffMsgSettings'])) { //Messaging settings options submitted foreach ($request['messages'] as $message) { $messageModel = $db->getMessageRepository()->loadBy(array('name' => $message['name'])); if ($messageModel != NULL) { $messageModel->content = $message['content']; $db->getMessageRepository()->update($messageModel); } } } if (isset($request['AffRegSettings'])) { //Registration settings options submitted if (isset($request['chkPayoutMethodManual'])) { update_option(WPAM_PluginConfig::$PayoutMethodManualIsEnabledOption, 1); } else { update_option(WPAM_PluginConfig::$PayoutMethodManualIsEnabledOption, 0); } if (isset($request['chkPayoutMethodPaypal'])) { update_option(WPAM_PluginConfig::$PayoutMethodPaypalIsEnabledOption, 1); } else { update_option(WPAM_PluginConfig::$PayoutMethodPaypalIsEnabledOption, 0); } if (isset($request['chkPayoutMethodCheck'])) { update_option(WPAM_PluginConfig::$PayoutMethodCheckIsEnabledOption, 1); } else { update_option(WPAM_PluginConfig::$PayoutMethodCheckIsEnabledOption, 0); } $affiliateFieldRepository = $db->getAffiliateFieldRepository(); $affiliateFieldRepository->delete(array('type' => 'custom')); $order = 0; foreach ($request['field'] as $fieldName => $params) { if ($params['type'] === 'custom') { $field = new WPAM_Data_Models_AffiliateFieldModel(); $field->type = 'custom'; $field->databaseField = $fieldName; $field->fieldType = $params['fieldType']; $field->length = $params['maxLength']; $field->name = $params['displayName']; } else { $field = $affiliateFieldRepository->loadby(array('databaseField' => $fieldName)); } $field->order = $order++; //#43 email is required (but not submitted b/c it's disabled on the form) if ($fieldName == 'email') { $field->enabled = 1; $field->required = 1; } else { $field->enabled = isset($params['enabled']) ? 1 : 0; $field->required = isset($params['required']) ? 1 : 0; } if ($params['type'] === 'custom') { $affiliateFieldRepository->insert($field); } else { $affiliateFieldRepository->update($field); } } $txtTnc = $request['txtTnc']; if (empty($txtTnc)) { //save the default T&C message if empty $txtTnc = file_get_contents(WPAM_RESOURCES_DIR . "default_tnc.txt"); } update_option(WPAM_PluginConfig::$TNCOptionOption, $txtTnc); $affhomemsg = $request['affhomemsg']; if (empty($affhomemsg)) { //save the default home message if empty $login_url = get_option(WPAM_PluginConfig::$AffLoginPageURL); $register_page_id = get_option(WPAM_PluginConfig::$RegPageId); $register_page_url = get_permalink($register_page_id); $affhomemsg = 'This is the affiliates section of this store. If you are an existing affiliate, please <a href="' . $login_url . '">log in</a> to access your control panel.'; $affhomemsg .= '<br />'; $affhomemsg .= '<br />'; $affhomemsg .= 'If you are not an affiliate, but wish to become one, you will need to apply. To apply, you must be a registered user on this blog. If you have an existing account on this blog, please <a href="' . $login_url . '">log in</a>. If not, please <a href="' . $register_page_url . '">register</a>.'; } update_option(WPAM_PluginConfig::$AffHomeMsg, $affhomemsg); } if (isset($request['AffPagesSettings'])) { //Affiliate pages/forms options submitted update_option(WPAM_PluginConfig::$AffLoginPageURL, $request['affLoginPage']); } if (isset($request['AffAdvancedSettings'])) { //Advanced Settings options submitted update_option(WPAM_PluginConfig::$AffLandingPageURL, $request['affLandingPage']); } return $this->getSettingsForm(NULL, "Settings updated."); } //else return $this->getSettingsForm($request, NULL, $vr); }
public function processRequest($request) { $db = new WPAM_Data_DataAccess(); if (isset($request['viewDetail']) && is_numeric($request['viewDetail'])) { $affiliateFields = $db->getAffiliateFieldRepository()->loadMultipleBy(array('enabled' => true), array('order' => 'asc')); $id = (int) $request['viewDetail']; $model = $db->getAffiliateRepository()->load($id); if ($model == null) { wp_die("Invalid affiliate ID."); } if (isset($request['action']) && $request['action'] == 'saveInfo') { $validator = new WPAM_Validation_Validator(); //validate bounty type & amount if they're in the appropriate status if (!$model->isPending() && !$model->isBlocked() && !$model->isDeclined()) { $validator->addValidator('ddBountyType', new WPAM_Validation_SetValidator(array('fixed', 'percent'))); if ($request['ddBountyType'] === 'fixed') { $validator->addValidator('txtBountyAmount', new WPAM_Validation_MoneyValidator()); } else { if ($request['ddBountyType'] === 'percent') { $validator->addValidator('txtBountyAmount', new WPAM_Validation_NumberValidator()); } } $validator->addValidator('ddPaymentMethod', new WPAM_Validation_SetValidator(array('check', 'paypal'))); if ($request['ddPaymentMethod'] === 'paypal') { $validator->addValidator('txtPaypalEmail', new WPAM_Validation_EmailValidator()); } } $affiliateHelper = new WPAM_Util_AffiliateFormHelper(); $vr = $affiliateHelper->validateForm($validator, $request, $affiliateFields, TRUE); if ($vr->getIsValid()) { $affiliateHelper->setModelFromForm($model, $affiliateFields, $request); $affiliateHelper->setPaymentFromForm($model, $request); $db->getAffiliateRepository()->update($model); } else { return $this->getDetailForm($affiliateFields, $model, $request, $vr); } } return $this->getDetailForm($affiliateFields, $model, $request); } else { if (isset($_GET['orderby'])) { $current_orderby = $_GET['orderby']; } else { $current_orderby = 'affiliateId'; } if (isset($_GET['order']) && 'desc' == $_GET['order']) { $current_order = 'desc'; } else { $current_order = 'asc'; } $orderBy = array($current_orderby => $current_order); $filterWhere = array(); $minPayout = NULL; if (!isset($request['statusFilter'])) { $request['statusFilter'] = 'all_active'; } if ($request['statusFilter'] !== 'all') { switch ($request['statusFilter']) { case 'all_active': $filterWhere['status'] = array('NOT IN', array('declined', 'blocked', 'inactive')); break; case 'all': break; case 'active': case 'applied': case 'approved': case 'confirmed': case 'declined': case 'blocked': case 'inactive': $filterWhere['status'] = $request['statusFilter']; default: break; } } if (isset($request['overPayout']) && $request['overPayout'] === 'true') { $minPayout = get_option(WPAM_PluginConfig::$MinPayoutAmountOption); } $models = $db->getAffiliateRepository()->loadAffiliateSummary($filterWhere, $minPayout, $orderBy); $response = new WPAM_Pages_TemplateResponse('admin/affiliates_list'); $response->viewData['minPayoutAmount'] = get_option(WPAM_PluginConfig::$MinPayoutAmountOption); $response->viewData['affiliates'] = $models; $response->viewData['request'] = $request; $response->viewData['statusFilters'] = array('all_active' => __('All Active', 'wpam'), 'all' => __('All (Including Closed)', 'wpam'), '---' => '---', 'active' => __('Status: Active', 'wpam'), 'applied' => __('Status: Applied', 'wpam'), 'approved' => __('Status: Approved', 'wpam'), 'confirmed' => __('Status: Confirmed', 'wpam'), 'declined' => __('Status: Declined', 'wpam'), 'blocked' => __('Status: Blocked', 'wpam'), 'inactive' => __('Status: Inactive', 'wpam')); $response->viewData['current_orderby'] = $current_orderby; $response->viewData['current_order'] = $current_order; } return $response; }