Example #1
0
 /**
  * Create a new customer 
  * 
  * List of all the array parameters
  * 
  * @param array_item firstname
  * @param array_item lastname
  * @param array_item email
  * @param array_item password
  * @param array_item company
  * @param array_item statusId
  * @param array_item gender
  * @param array_item birthplace
  * @param array_item birthdate
  * @param array_item birthcountry
  * @param array_item birthnationality
  * @param array_item vat
  * @param array_item taxpayernumber
  * @param array_item contact
  * @param array_item contacttype
  * @param array_item address
  * @param array_item city
  * @param array_item code
  * @param array_item country
  * @param array_item area
  * @param array_item legalform
  * @param array_item company_type_id
  * @param array_item welcome_mail
  * @param array_item parent_id
  * @param array_item isreseller
  */
 public static function Create($data)
 {
     $locale = Shineisp_Registry::getInstance()->Zend_Locale;
     $customer = new Customers();
     $isDisabled = false;
     $language_id = Languages::get_language_id_by_code((string) $locale);
     // By default, welcome mail is sent
     $data['welcome_mail'] = isset($data['welcome_mail']) ? intval($data['welcome_mail']) : true;
     // Customer's parameters.
     $customer->company = !empty($data['company']) ? $data['company'] : null;
     $customer->firstname = !empty($data['firstname']) ? $data['firstname'] : null;
     $customer->lastname = !empty($data['lastname']) ? $data['lastname'] : null;
     $customer->gender = !empty($data['gender']) ? $data['gender'] : null;
     $customer->email = $data['email'] ? $data['email'] : null;
     $customer->password = crypt($data['password']);
     $customer->birthplace = !empty($data['birthplace']) ? $data['birthplace'] : null;
     $customer->birthdate = !empty($data['birthdate']) ? Shineisp_Commons_Utilities::formatDateIn($data['birthdate']) : null;
     $customer->birthdistrict = !empty($data['birthdistrict']) ? $data['birthdistrict'] : null;
     $customer->birthcountry = !empty($data['birthcountry']) ? $data['birthcountry'] : null;
     $customer->birthnationality = !empty($data['birthnationality']) ? $data['birthnationality'] : null;
     $customer->note = !empty($data['note']) ? $data['note'] : Null;
     $customer->vat = !empty($data['vat']) ? $data['vat'] : Null;
     $customer->taxpayernumber = !empty($data['taxpayernumber']) ? $data['taxpayernumber'] : Null;
     // Let's try to get status_id from status
     if (isset($data['status']) && !empty($data['status'])) {
         $customer->status_id = Statuses::id($data['status'], 'Customers');
         $isDisabled = isset($data['status']) && strtolower($data['status']) == 'disabled' ? true : false;
     } else {
         $customer->status_id = !empty($data['status_id']) ? $data['status_id'] : Statuses::id('Active', 'Customers');
     }
     $customer->legalform_id = !empty($data['legalform']) ? $data['legalform'] : Null;
     $customer->type_id = !empty($data['company_type_id']) ? $data['company_type_id'] : Null;
     $customer->parent_id = !empty($data['parent_id']) ? $data['parent_id'] : Null;
     $customer->isreseller = !empty($data['isreseller']) ? $data['isreseller'] : Null;
     $customer->language_id = !empty($language_id) ? intval($language_id) : 1;
     $customer->created_at = date('Y-m-d H:i:s');
     $customer->updated_at = date('Y-m-d H:i:s');
     // Try to get the real isp_id, based on logged user or on request uri
     // TODO: this should be done better
     $customer->isp_id = Isp::getCurrentId();
     // Generate an UUID. Used for API when you need to sync customers between services
     // TODO: allow custom uuid coming from api ? If yes, we should check for uniqueness in database
     $customer->uuid = Shineisp_Commons_Uuid::generate();
     // customer disabled? Disable its password
     if ($isDisabled) {
         $customer->password = '******' . $customer->password;
     }
     // Save the data
     $customer->save();
     if (!empty($data['contact'])) {
         $customer->Contacts[0]->contact = !empty($data['contact']) ? $data['contact'] : Null;
         $customer->Contacts[0]->type_id = !empty($data['contacttypes']) ? $data['contacttypes'] : Null;
         $customer->Contacts[0]->base = 1;
         $customer->save();
     }
     if (!empty($data['address'])) {
         $customer->Addresses[0]->address = !empty($data['address']) ? $data['address'] : Null;
         $customer->Addresses[0]->city = !empty($data['city']) ? $data['city'] : Null;
         $customer->Addresses[0]->code = !empty($data['code']) ? $data['code'] : Null;
         $customer->Addresses[0]->country_id = !empty($data['country_id']) ? $data['country_id'] : Null;
         $customer->Addresses[0]->area = !empty($data['area']) ? $data['area'] : Null;
         $customer->save();
     }
     $customerID = $customer->getIncremented();
     // Add the customer email in the newsletter list
     if (!$isDisabled) {
         NewslettersSubscribers::customer_optIn($customer['customer_id']);
     }
     // Send the welcome email
     if ($data['welcome_mail'] == true && !$isDisabled) {
         self::welcome_mail($customerID, $data['password']);
     }
     return $customerID;
 }
Example #2
0
 public function routeShutdown(Zend_Controller_Request_Abstract $request)
 {
     $force = false;
     $registry = Shineisp_Registry::getInstance();
     // Check if the config file has been created
     $isReady = Shineisp_Main::isReady();
     $module = $request->getModuleName();
     if ($module == "default") {
         // set the right session namespace per module
         $module_session = 'Default';
     } elseif ($module == "admin") {
         $module_session = 'Admin';
     } else {
         $module_session = 'Default';
     }
     $ns = new Zend_Session_Namespace($module_session);
     try {
         $locale = new Zend_Locale(Zend_Locale::BROWSER);
         if (!empty($ns->lang)) {
             $locale = new Zend_Locale($ns->lang);
         }
         Shineisp_Commons_Utilities::log("System: Get the browser locale: " . $locale, "debug.log");
     } catch (Exception $e) {
         Shineisp_Commons_Utilities::log("System: " . $e->getMessage(), "debug.log");
         if (!empty($ns->lang)) {
             Shineisp_Commons_Utilities::log("System: Get the session var locale", "debug.log");
             $locale = new Zend_Locale($ns->lang);
         } else {
             $locale = new Zend_Locale("en");
             Shineisp_Commons_Utilities::log("System: There is not any available locale, set the default one: en_GB", "debug.log");
         }
     }
     // check the user request if it is not set, please get the old prefereces
     $lang = $request->getParam('lang');
     if (empty($lang)) {
         // Get the user preference
         if (strlen($locale) == 2) {
             // Check if the Browser locale is formed with 2 chars
             $lang = $locale;
         } elseif (strlen($locale) > 4) {
             // Check if the Browser locale is formed with > 4 chars
             $lang = substr($locale, 0, 2);
             // Get the language code from the browser preference
         }
     } else {
         $force = true;
     }
     // Get the translate language or the default language: en
     if (file_exists(PUBLIC_PATH . "/languages/{$lang}/{$lang}.mo")) {
         $translate = new Zend_Translate(array('adapter' => "Shineisp_Translate_Adapter_Gettext", 'content' => PUBLIC_PATH . "/languages/{$lang}/{$lang}.mo", 'locale' => $lang, 'disableNotices' => true));
     } else {
         $translate = new Zend_Translate(array('adapter' => "Shineisp_Translate_Adapter_Gettext", 'locale' => $lang, 'disableNotices' => true));
     }
     $registry->set('Zend_Translate', $translate);
     $registry->set('Zend_Locale', $locale);
     if ($isReady) {
         if (empty($ns->langid) || $force) {
             $ns->langid = Languages::get_language_id_by_code($lang);
         }
     } else {
         $ns->langid = 1;
     }
     $ns->lang = $lang;
     Shineisp_Commons_Utilities::log("System: Locale set: " . $locale, "debug.log");
     Shineisp_Commons_Utilities::log("System: Language selected: " . $ns->lang, "debug.log");
 }
Example #3
0
 /**
  * Get a record by ID
  * 
  * @param $id
  * @return Doctrine Record
  */
 public static function find($id, $fields = "*", $retarray = false, $lang = "en")
 {
     $language_id = Languages::get_language_id_by_code($lang);
     $dq = Doctrine_Query::create()->select($fields)->from('EmailsTemplates et')->leftJoin("et.EmailsTemplatesData etd WITH etd.language_id = " . intval($language_id))->where("et.template_id = ?", $id)->limit(1);
     return $retarray ? $dq->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY) : $dq->fetchOne();
 }