/** * Javascript strings Localization wrapper for Drupal * @param $locale */ public function l10n($locale) { $strings = DruniqueAPIUtil::call('page_blocks.json', ['tag' => 'javascript'], $locale); $strings = Hash::combine($strings, '{s}.title', '{s}.content'); $this->set(['result' => $strings, '_serialize' => 'result']); $this->response->cache('-1 minute', '+1 days'); }
/** * Get Item drupal content for admin * @param $sku * @return null */ protected function getItemDrupal($sku) { if (empty($sku)) { return null; } $drupal = null; DruniqueAPIUtil::getData(['api_url' => 'product.json', 'params' => ['sku' => $sku], 'tag' => 'product_' . $sku, 'locale' => 'en_US', 'duration' => 'long'], $drupal); return $drupal; }
public function updateSystemSetting() { App::import('Model', 'SystemSetting'); $system_setting = new SystemSetting(); $value = $this->data['new_val']; $result = $system_setting->saveSetting('allow_expedited_shipping', $value); if (!is_numeric($value)) { $this->sendError(500, DruniqueAPIUtil::content('Not A Number', $this->DruniqueAPI->page_data)); return; } $this->sendSuccess(DruniqueAPIUtil::content('Expedited Shipping ' . (!$value ? 'Disabled' : 'Enabled') . '.', $this->DruniqueAPI->page_data)); }
/** * Send via mandrill template * * $data needs: * - template_name * - template_content * - template_content_field_name * - subject * - from_presenter_id * - from_email * - from_name * - to array * - name * - email * - img_url * - template_name * - tag * * * @throws Exception * @throws Mandrill_Error */ public function sendTemplate() { $data = $this->request->data; try { App::import('model', 'TeamCommunication'); $this->TeamCommunication = new TeamCommunication(); App::import('model', 'TeamCommunicationRestriction'); $this->TeamCommunicationRestriction = new TeamCommunicationRestriction(); $is_restricted = $this->TeamCommunicationRestriction->isRestricted($data['from_presenter_id']); if ($is_restricted !== FALSE) { $this->sendError(500, DruniqueAPIUtil::content('Restricted', $this->DruniqueAPI->page_data)); } else { $mandrill = new Mandrill(MANDRILL_API_KEY); $template_name = $data['template_name']; $template_content = array(array('name' => $data['template_content_field_name'], 'content' => $data['template_content'])); $to = array(); $merge_vars = array(); $tag = $data['from_email'] . "-" . $data['tag'] . "-" . date('Y-m-d H:i:s'); foreach ($data['to'] as $value) { if ($this->TeamCommunicationRestriction->isRestricted($value['email'], 'receive')) { continue; } $to[] = array('name' => $value['name'], 'email' => $value['email']); $merge_vars[] = array('rcpt' => $value['email'], 'vars' => array(array('name' => 'FNAME', 'content' => $value['name']), array('name' => 'PRS', 'content' => $value['prs']), array('name' => 'LIFETIME_PRS', 'content' => $value['lifetime_prs']), array('name' => 'NEW_REC_STATUS', 'content' => $value['recognized_status']), array('name' => 'FAST_START_END', 'content' => '01/12/2015'), array('name' => 'LIFETIME_REMAINING', 'content' => '10.00'), array('name' => 'REMAINING_PRS', 'content' => '10.00'), array('name' => 'REMAINING_CoWS', 'content' => '10.00'), array('name' => 'REMAINING_QFL', 'content' => '0'), array('name' => 'REMAINING_CiWS', 'content' => '0'))); } $message = array('from_email' => $data['from_email'], 'from_name' => $data['from_name'], 'to' => $to, 'headers' => array('Reply-To' => $data['from_email']), 'track_opens' => TRUE, 'track_clicks' => TRUE, 'auto_text' => TRUE, 'auto_html' => NULL, 'inline_css' => NULL, 'url_strip_qs' => NULL, 'preserve_recipients' => FALSE, 'view_content_link' => NULL, 'bcc_address' => $data['from'], 'tracking_domain' => NULL, 'signing_domain' => NULL, 'return_path_domain' => NULL, 'merge' => TRUE, 'global_merge_vars' => array(array('name' => 'PROFILEIMAGEURL', 'content' => $data['img_url']), array('name' => 'DATE', 'content' => date('m/d/Y')), array('name' => 'PRESENTER_FNAME', 'content' => $data['from_first_name']), array('name' => 'RECOGNIZED_STATUS', 'content' => 'Black')), 'merge_vars' => $merge_vars); $async = TRUE; $mandrill->messages->sendTemplate($template_name, $template_content, $message, $async); //store email $this->TeamCommunication->create(); $this->TeamCommunication->set('presenter_id', $data['from_presenter_id']); $this->TeamCommunication->set('tag', $tag); $this->TeamCommunication->set('content', $data['template_content']); $this->TeamCommunication->set('created', date('Y-m-d H:i:s')); $this->TeamCommunication->save(); } $this->sendSuccess(TRUE); } catch (Mandrill_Error $e) { // Mandrill errors are thrown as exceptions error_log('A mandrill error occurred: ' . get_class($e) . ' - ' . $e->getMessage()); // A mandrill error occurred: Mandrill_Unknown_Subaccount - No subaccount exists with the id 'customer-123' $this->sendError(500, FALSE); } }
public function orderSearch($search_type, $search_term) { $this->data = $this->request->data; if (empty($search_term)) { $this->sendError(500, DruniqueAPIUtil::content('Empty Search', $this->DruniqueAPI->page_data)); } if (empty($this->data['user_id'])) { $this->sendError(500, DruniqueAPIUtil::content('Need a user id', $this->DruniqueAPI->page_data)); } else { $user_id = $this->data['user_id']; if (!empty($this->data['presenter_id'])) { $presenter_id = $this->data['presenter_id']; } else { $presenter_id = NULL; } switch ($search_type) { case 'purchaser': $result = $this->Order->getOrderHistoryByPurchaser($user_id, $presenter_id, $search_term); break; case 'email': $result = $this->Order->getOrderHistoryByEmail($user_id, $presenter_id, $search_term); break; case 'shipto': $result = $this->Order->getOrderHistoryByShipto($user_id, $presenter_id, $search_term); break; case 'party': $result = $this->Order->getOrderHistoryByParty($user_id, $presenter_id, $search_term); break; case 'month': $result = $this->Order->getOrderHistoryByMonth($user_id, $presenter_id, $search_term); break; case 'default': $result = $this->Order->getOrderHistoryByMonth($user_id, $presenter_id); break; } if (!empty($result)) { $this->sendSuccess($result); } else { } } }
/** * Get drupal data * $config = [ * 'api_url' => 'page_data.json', * 'duration' => 'short', * 'caching' => true, * 'locale' => 'en_US * ]; * @param $config * @param $data * @return null */ public function getData($config, &$data) { if (empty($config)) { return null; } /** * Get defaults */ $config = array_merge($this->getDefaultConfig(), $config); /** * Setup params */ if (empty($config['params'])) { $config['params'] = ['tag' => $config['action'] . '-page']; } $data = DruniqueAPIUtil::call($config['api_url'], $config['params'], $config['locale']); }
/** * Wrapper of CakeEmail object creation and submission. * @param $emailData * @param string $templateName * @param string $to * @param string $subjectBlockName * @param string $tag * @param string $locale * @param bool $debug * @param array $emailOptions * @return string * @throws Exception */ public static function sendEmail($emailData, $templateName = '', $to = '', $subjectBlockName = '', $tag = '', $locale = 'en-US', $debug = false, $emailOptions = array()) { if (empty($templateName) || empty($to) || empty($subjectBlockName)) { CakeLog::error('CRITICAL EXEPTION: In email library.'); CakeLog::error('Empty argument passed to email sender.'); throw new BadMethodCallException('Empty argument passed to email sender.', 1); return false; } // Since getting the data from Drupal happens in-line we need to check // for errors by seeing if we only get log_info back and nothing else. if (!empty($tag)) { $drupalData = array(); DruniqueAPIUtil::getData(['api_url' => 'email_text.json', 'params' => ['tag' => $tag], 'locale' => $locale], $drupalData); if (sizeof($drupalData) <= 1) { CakeLog::error('CRITICAL EXEPTION: In email library.'); CakeLog::error('Unable to get view variables from CMS.'); throw new Exception('Unable to get view variables from CMS.', 1); return false; } $emailData['email_text'] = $drupalData; } $email = new CakeEmail('default'); $subject = DruniqueAPIUtil::content($subjectBlockName, $emailData['email_text']); $subject = preg_replace('/[\\pZ\\pC]/u', ' ', $subject); if ($debug) { $email->transport('Debug'); } // Make sure format is set correctly based on existence of templates. $format = 'both'; $htmlTemplateExists = is_readable(APP . "View/Emails/html/{$templateName}.ctp"); $textTemplateExists = is_readable(APP . "View/Emails/text/{$templateName}.ctp"); if (!$htmlTemplateExists && !$textTemplateExists) { CakeLog::error('CRITICAL ERROR: In email library.'); CakeLog::error("Unable to find email template named {$templateName}.ctp"); return false; } elseif (!$htmlTemplateExists && $textTemplateExists) { $format = 'text'; } elseif ($htmlTemplateExists && !$textTemplateExists) { $format = 'html'; } $email->template($templateName, 'default')->emailFormat($format)->to($to)->subject(html_entity_decode($subject, ENT_QUOTES))->viewVars($emailData); if (isset($emailOptions['bcc'])) { $email->bcc($emailOptions['bcc']); } if (isset($emailOptions['cc'])) { $email->cc($emailOptions['cc']); } try { $response = $email->send(); if ($debug) { return $response; } if ($response) { $result = 'Email was sent successfully'; } else { $result = 'Email failed to send without exceptions'; CakeLog::error('CRITICAL ERROR: Email library failed to send an email without exception.'); Cakelog::error(print_r($email, true)); } } catch (Exception $e) { $result = 'Email failed with exception: ' . print_r($e->getMessage(), true); CakeLog::error('CRITICAL ERROR: In email library.'); CakeLog::error($e->getMessage()); } return $result; }
public function sendInvite($partyId = null) { $result = $this->Party->partyFromId($partyId); $partyData = $result['Party']; $siteurl = $this->Session->read('siteurl'); $email_frm_type = !empty($this->data['emailFormType']) ? $this->data['emailFormType'] : 'invite'; if (empty($this->presenterId)) { $presenter = $this->Presenter->loadFromWebsite($siteurl->site_url); } else { $presenter = $this->Presenter->presenterFromUserId($this->userId); } if (!empty($this->data['email'])) { $userLocale = $this->User->userLocale($presenter['Presenter']['user_id']); $language = $party['hostess']['language']; $email_data = ["id" => $partyId, "name" => h($this->data['name']), "presenter_name" => h($presenter['User']['first_name'] . " " . $presenter['User']['last_name']), "presenter_email" => h($presenter['User']['Email']['email']), "event_desc" => h($partyData['event_desc']), "site_url" => h($presenter['PresenterSite']['site_url']), "shareUrl" => $this->data['emailFormUrl']]; YouniqueEmail::queueEmail($email_data, 'en_us_newparty_' . $email_frm_type, $this->data['email'], 'You Have Been Invited to Party', 'sendInvite-page', $userLocale); // $this->sendPartyInviteToPerson($formData, $presenter, $this->data['email']); $this->sendSuccess(true); } $this->sendError(500, array("messages" => DruniqueAPIUtil::content('Invitation could not be sent', $this->DruniqueAPI->page_data))); }
/** * Backorders v2 UI - Returns an array containing the item name from Drupal * If the returned value is false, the sku name was not found. * If the returned value is a string, an error has occured and the string is error message * @param $locale * @return array | boolean:false | string */ public function getItemName($locale) { $criteria = ['contain' => ['ParentItems'], 'conditions' => ['Item.sku' => $this->sku]]; try { $item = $this->Item->find('first', $criteria); // update to work with DruniqueAPIUtil::drupalName $item['Item']['ParentItems'] = $item['ParentItems']; unset($item['ParentItems']); $item_name = DruniqueAPIUtil::drupalName($item, $locale); } catch (Exception $e) { return $e->getMessage(); } // if Drupal didn't return anything use the $item object if possible if (empty($item_name)) { if (empty($item)) { return false; } $p_name = $item['Item']['ParentItems']['name']; $item_name = (empty($p_name) ? '' : $p_name . ' - ') . $item['Item']['name']; } // put the item name into an array $data['Item'] = array('name' => $item_name); return $data; }
public function admin_searchLooks() { $look_id = isset($this->data['look_id']) && !empty($this->data['look_id']) ? $this->data['look_id'] : NULL; $look_name = isset($this->data['look_name']) && !empty($this->data['look_name']) ? $this->data['look_name'] : NULL; $start_date = isset($this->data['start_date']) && !empty($this->data['start_date']) ? $this->data['start_date'] : NULL; $end_date = isset($this->data['end_date']) && !empty($this->data['end_date']) ? $this->data['end_date'] : NULL; $page = isset($this->data['page']) && !empty($this->data['page']) ? $this->data['page'] : 0; if (is_null($look_id) && is_null($look_name) && is_null($start_date) && is_null($end_date)) { $this->sendError(500, DruniqueAPIUtil::content('Empty Search', $this->DruniqueAPI->page_data)); return; } $conditions = []; $conditions['look_status_id'] = Look::STATUS_ACTIVE; if (!is_null($look_id)) { $conditions['Look.id'] = $look_id; } if (!is_null($look_name)) { $conditions['name LIKE'] = "%" . $look_name . "%"; } if (!is_null($start_date) && !empty($start_date)) { $conditions['created >='] = $start_date; } if (!is_null($end_date) && !empty($end_date)) { $conditions['created <='] = $end_date; } $looks = $this->Look->find('all', ['conditions' => $conditions, 'contain' => ["User", 'Picture', 'LookMedia'], 'page' => $page, 'limit' => 50, 'order' => 'created desc']); $results = []; foreach ($looks as $value) { $results[] = ['id' => $value['Look']['id'], 'img' => !empty($value['Picture']['reference']) ? $value['Picture']['reference'] : $value['LookMedia'][0]['reference'], 'name' => $value['Look']['name'], 'creator_id' => $value['User']['id'], 'creator' => $value['User']['first_name'] . ' ' . $value['User']['last_name'], 'created' => $value['Look']['created'], 'love_it_count' => $value['Look']['likes']]; } $this->sendSuccess($results); }
public function profile($userId) { $this->requirePresenterLoggedIn(); $this->User->id = $userId; if ($this->User->belongsToPresenter($this->presenterId)) { $user = $this->User->find("first", array("contain" => array("Email", "Address" => array("State", "Country"), "Phone"), "conditions" => array("User.id" => $userId))); $profile = array("id" => $user['User']['id'], "first_name" => $user['User']['first_name'], "last_name" => $user['User']['last_name'], "name" => $user['User']['first_name'] . " " . $user['User']['last_name'], "user_default_locale" => $user['User']['user_default_locale'], "facebook_id" => $user['User']['facebook_id'], "largeimage" => $user['User']['largeimage'], "address" => array("address1" => $user['Address']['address1'], "address2" => $user['Address']['address2'], "address3" => $user['Address']['address3'], "city" => $user['Address']['city'], "postal_code" => strtoupper($user['Address']['postal_code']), "state" => $user['Address']['State']['name'], "country" => $user['Address']['Country']['name']), "phone" => $user['Phone']['phone'], "email" => $user['Email']['email']); $this->sendSuccess($profile); } else { $this->sendError(500, DruniqueAPIUtil::content('Unkonwn User', $this->DruniqueAPI->page_data)); } }
public function admin_addAccomplishment() { App::import('model', 'AdminUserAudit'); $this->AdminUserAudit = new AdminUserAudit(); App::import('model', 'Accomplishment'); $this->Accomplishment = new Accomplishment(); $user_id = $this->data['user_id']; $presenter = $this->Presenter->presenterFromUserId($user_id); $presenter_id = $presenter['Presenter']['id']; $accomplishment = $this->data['accomplishment']; $admin_user = $this->Session->read('admin_user')->id; $date_added = $this->data['datetime']; if (!$user_id || !$accomplishment) { $this->sendError(500, DruniqueAPIUtil::content('Missing required parameter', $this->DruniqueAPI->page_data)); return; } switch ($accomplishment) { case 'yellow': case 'pink': case 'blue': case 'green': case 'orange': case 'purple': case 'black': if (!$this->Accomplishment->accomplishmentExistsForUser("statusadvancement", $user_id, $accomplishment)) { if (!$presenter) { $this->sendError(500, DruniqueAPIUtil::content('There was an error', $this->DruniqueAPI->page_data)); return; } $result = $this->Accomplishment->presenterStatusAdvancement($presenter, $accomplishment, $date_added); if (!$result) { $this->sendError(500, DruniqueAPIUtil::content('There was an error', $this->DruniqueAPI->page_data)); return; } } else { $this->sendError(500, DruniqueAPIUtil::content('Accomplishment already exists', $this->DruniqueAPI->page_data)); return; } break; case 'faststart': if (!$this->Accomplishment->accomplishmentExistsForUser("faststart", $user_id)) { $this->Accomplishment->fastStart($presenter, $date_added); } else { $this->sendError(500, DruniqueAPIUtil::content('Accomplishment already exists', $this->DruniqueAPI->page_data)); return; } break; case 'party': App::import('model', 'Party'); $this->Party = new Party(); $parties = $this->Party->find('all', ['conditions' => ['party_total >=' => 1000, 'presenter_id' => $presenter_id]]); if (empty($parties)) { $this->sendError(500, DruniqueAPIUtil::content('No matching parties', $this->DruniqueAPI->page_data)); return; } foreach ($parties as $key => $value) { if (!$this->Accomplishment->accomplishmentExistsForUser("party1000", $user_id, $value['Party']['id'])) { //gotta get the party $party = $this->Party->partyFromId($value['Party']['id']); $party['Presenter']['User']['id'] = $party['Presenter']['user_id']; $this->Accomplishment->party1000($party, $date_added); } } break; default: $this->sendError(500, DruniqueAPIUtil::content('Invalid accomplishment', $this->DruniqueAPI->page_data)); return; break; } //log who did it $admin_data = array('admin_user_id' => $admin_user, 'reference_name' => 'accomplishment.reference_id', 'reference_id' => $accomplishment, 'old_value' => '', 'new_value' => $accomplishment, 'notes' => "Admin tool used to add accomplishment"); $this->AdminUserAudit->save($admin_data); $this->sendSuccess(DruniqueAPIUtil::content('Accomplishment added', $this->DruniqueAPI->page_data)); }
private function _cancelOrder($orderId) { //load the order $order = $this->Order->loadPaymentDetails($orderId); //save array of entries created to roll them back if need be $halfPriceItemsCreated = array(); $yCashCreated = array(); $refundFailedFlag = FALSE; //refund any half price items used on order $items = array(); foreach ($order['OrderCustomer']['OrderItem'] as $itemValue) { $items[] = $itemValue; //creates an array of coupons used on the order } //refunds each coupon used foreach ($items as $key => $value) { if (count($value['CouponPresenterUser']) > 0) { foreach ($value['CouponPresenterUser'] as $couponPresenterUser) { $halfPriceItemsCreated[] = $this->Order->OrderCustomer->OrderItem->CouponPresenterUser->saveCreate(array("CouponPresenterUser" => array("coupon_presenter_id" => $couponPresenterUser['coupon_presenter_id'], "user_id" => $couponPresenterUser['user_id'], "reference_id" => $couponPresenterUser['reference_id'], "user_visible" => (int) $couponPresenterUser['user_visible'], "date_added" => date('Y-m-d H:i:s'), "expiration_date" => "0000-00-00"))); } } } //refund ycash and credit card pmts $payments = $order['OrderPayment']; if (count($payments) > 0) { foreach ($payments as $value) { switch ($value['order_payment_type_id']) { case OrderPayment::TYPE_LEDGER: //y cash // TODO: TEST THIS!! // //get original record // $productCredit = $this->ProductCredit->find("first", array( // "conditions"=>array( // "id"=>$value['transactionid'] // ) // )); // // $methodId = $productCredit['ProductCredit']['product_credit_entry_type_id']; // $typeId = $productCredit['ProductCredit']['product_credit_type_id']; // $marketId = $productCredit['ProductCredit']['market_id']; // $presenterId = $productCredit['ProductCredit']['presenter_id']; // $userId = $productCredit['ProductCredit']['user_id']; // $cost = Money::fromFloat($productCredit['ProductCredit']['amount']); // $entryUser = $productCredit['ProductCredit']['entry_user']; // $referenceId = $productCredit['ProductCredit']['reference_id']; // // $yCashCreated = $this->ProductCredit->credit($methodId, $typeId, $marketId, $presenterId, $userId, $cost, $entryUser,$referenceId); $yCashCreated = $this->_refundYCash($value['transactionid']); break; case OrderPayment::TYPE_OXXO: $order_paid = $value['order_payment_status_id']; if ($order_paid == OrderPayment::STATUS_PENDING) { $refundFailedFlag == false; break; } if ($order_paid == OrderPayment::STATUS_SUCCESS) { $amount = $value['amount']; $typeId = ProductCredit::TYPE_REFUND; $methodId = ProductCredit::METHOD_SYSTEM; $marketId = $order['Order']['order_market_id']; $presenterId = $order['Order']['presenter_id']; $userId = $order['Order']['user_id']; $cost = $value['amount']; $entryUser = '******'; $referenceId = $orderId; $result = $this->ProductCredit->credit($methodId, $typeId, $marketId, $presenterId, $userId, $cost, $entryUser, $referenceId); $refundFailedFlag == false; } break; case OrderPayment::TYPE_CREDITCARD: //credit card //credit card default: //will also catch paypal payments $currency = $this->Market->getCurrencyType($order['Order']['order_market_id']); $refundResult = $this->_processRefund($value['transactionid'], $value['amount'], $currency, $value['order_payment_processor_id'], $orderId); if (!$refundResult) { $refundFailedFlag = TRUE; } break; } } } //$last_quote_date = ($this->Session->check('last_quote_date') ? $this->Session->read('last_quote_date') : null); $this->Order->create_negative_invoice($orderId); if ($refundFailedFlag !== TRUE) { //no errors //check for order promos that may need to be rolled back $productCreditToVoid = $this->ProductCredit->find("first", array("conditions" => array("reference_id" => $orderId, "product_credit_type_id" => ProductCredit::TYPE_PROMOCREDIT))); if (!empty($productCreditToVoid)) { $this->ProductCredit->read('', $productCreditToVoid['ProductCredit']['id']); $this->ProductCredit->set(array("product_credit_status_type_id" => ProductCredit::STATUS_VOIDED)); $this->ProductCredit->save(); } //change the order status to cancelled which means the order had not shipped yet $this->Order->id = $orderId; $this->Order->saveField("order_status_id", Order::STATUS_CANCELLED); $this->OrderItem->cancelLineItems($order['OrderCustomer']['id']); // New Netsuite compatible cancellation. $this->Order->setDynamicData($orderId, 'netsuite_cancel', 'pending', false, true); //set royalty to zero $this->RoyaltiesEarned->read('', $order['RetailRoyalty']['id']); $this->RoyaltiesEarned->set("point_amount", 0); $this->RoyaltiesEarned->set("amount", 0); $this->RoyaltiesEarned->set("date_paid", date('Y-m-d H:i:s')); $this->RoyaltiesEarned->save(); $this->sendSuccess(TRUE); } else { //errors //roll back ycash, half price items foreach ($yCashCreated as $value) { if (isset($value['id'])) { $this->ProductCredit->delete($value['id']); } } foreach ($halfPriceItemsCreated as $value) { if (isset($value['CouponPresenterUser']['id'])) { $this->Order->OrderCustomer->OrderItem->CouponPresenterUser->delete($value['CouponPresenterUser']['id']); } } $this->sendError(500, DruniqueAPIUtil::content('Refund failed', $this->DruniqueAPI->page_data)); } }
/** * Update promos on order items * - and Add drupal Item Names * * @param $o * @param string $locale */ private function updatePromosAddDrupal(&$o, $locale = 'en_US') { $this->PromotionalProduct = ClassRegistry::init('PromotionalProduct'); $this->NsWarehouse = ClassRegistry::init('NsWarehouse'); $this->Item = ClassRegistry::init('Item'); foreach ($o['OrderCustomer']['OrderItem'] as $ik => &$item) { /** * Set backorder restock date */ if (!empty($item['OrderItemRestock'][0]['restock_date']) && $item['order_item_hold_code_id'] == OrderItemHoldCode::BACKORDERED) { $item['estimated_date'] = $item['OrderItemRestock'][0]['restock_date']; } else { $item['estimated_date'] = null; } $wid = $item['ns_warehouse_id']; $date = $item['date_created']; $bo_date = $this->NsWarehouse->backOrderStartDate($date, $item['Item']['sku'], $wid); if (!empty($bo_date)) { $item['backorder_start'] = $bo_date; } /** * Set drupal data */ $item['Item']['name'] = DruniqueAPIUtil::drupalName($item, $locale); $promo = $this->PromotionalProduct->find('first', ['conditions' => ['reward_sku' => $item['Item']['sku']]]); $item['Item']['PromotionalProduct'] = $promo['PromotionalProduct']; } }
public function createECBAccomplishment($userToReceive, $eligibleStatus, $yearmonth) { $page_data = NULL; $usable_userLocale = empty($userToReceive['User']['user_default_locale']) ? 'en_US' : $userToReceive['User']['user_default_locale']; DruniqueAPIUtil::getData(['api_url' => 'page_blocks.json', 'params' => ['tag' => 'createECBAccomplishment-page'], 'tag' => "createECBAccomplishment-page_" . $usable_userLocale, 'locale' => $usable_userLocale, 'duration' => 'long'], $page_data); $userName = $userToReceive['User']['first_name'] . " " . $userToReceive['User']['last_name']; switch ($eligibleStatus) { case 5: $accomplishmentType = "ecbgreen"; $accomplishmentMessage = DruniqueAPIUtil::content('eliteconsistencyaccomplishment_0', $page_data, $userName); $fullaccomplishmentType = "fullecbgreen"; $fullaccomplishmentMessage = DruniqueAPIUtil::content('eliteconsistencyaccomplishment_1', $page_data, $userName); break; case 6: $accomplishmentType = "ecborange"; $accomplishmentMessage = DruniqueAPIUtil::content('eliteconsistencyaccomplishment_2', $page_data, $userName); $fullaccomplishmentType = "fullecborange"; $fullaccomplishmentMessage = DruniqueAPIUtil::content('eliteconsistencyaccomplishment_3', $page_data, $userName); break; } //Give the presenter an accomplishment for their efforts $this->saveCreate(array('type' => $accomplishmentType, 'bragger' => 1, 'user_id' => $userToReceive['User']['id'], 'message' => $accomplishmentMessage, 'datetime' => date('Y-m-d h:i:s'), 'reference_id' => $yearmonth, 'facebook_id' => '-1')); //Has the presenter earned all four months? Give them another accomplishment $countECB = $this->find('count', array('conditions' => array('user_id' => $userToReceive['User']['id'], 'type' => $accomplishmentType))); if ($countECB == 4) { $this->saveCreate(array('type' => $fullaccomplishmentType, 'bragger' => 1, 'user_id' => $userToReceive['User']['id'], 'message' => $fullaccomplishmentMessage, 'datetime' => date('Y-m-d h:i:s'), 'facebook_id' => '-1')); } }
/** * Set express checkout */ public function setExpressPayment() { $prices = $this->prices(TRUE); if (empty($prices)) { $this->sendError(500, DruniqueAPIUtil::content('no price info', $this->DruniqueAPI->page_data)); } $amount = number_format($prices['total']['charge']->amount / 100, 2); $marketId = $this->request->data['market_id']; $market = $this->Market->find("first", array("fields" => array("currency"), "conditions" => array("id" => $marketId))); $currency = $market['Market']['currency']; //get presenter site url for the return url $presenter_id = $this->request->data["sponsor_id"]; $presenter_site = $this->Presenter->PresenterSite->find('first', array("conditions" => array("presenter_id" => $presenter_id))); $presenter_site_url = $presenter_site['PresenterSite']['site_url']; $expressPayment = $this->Payment->setExpressPayment($amount, $currency, $presenter_site_url); if ($expressPayment) { $this->sendSuccess($expressPayment); } else { $this->sendError(500, DruniqueAPIUtil::content('cannot create paypal trans', $this->DruniqueAPI->page_data)); } }
/** * Bullet method with string replacement * @param $title * @param $index * @param null $args * @return string */ public function bullet_r($title, $index, $args = null) { $bullet = $this->bullet($title); if (!empty($bullet) && isset($bullet[$index])) { $bullet = $bullet[$index]; } else { if (!empty($data)) { DruniqueAPIUtil::log_error($data, $title); } return $title; } $arguments = func_get_args(); return htmlspecialchars_decode($this->parse($bullet, array_slice($arguments, 2))); }
public function updateSystemSetting() { App::import('Model', 'SystemSetting'); $system_setting = new SystemSetting(); $value = $this->data['new_qty']; $result = $system_setting->saveSetting('snap_orders_qty', $value); if (!is_numeric($value)) { $this->sendError(500, DruniqueAPIUtil::content('Not A Number', $this->DruniqueAPI->page_data)); return; } $this->sendSuccess(DruniqueAPIUtil::content('New value saved', $this->DruniqueAPI->page_data)); }