Files
aux-bieaux-legumes/local/modules/CustomerFamily/CustomerFamily.php

132 lines
4.5 KiB
PHP

<?php
/*************************************************************************************/
/* This file is part of the module CustomerFamily */
/* */
/* Copyright (c) OpenStudio */
/* email : dev@thelia.net */
/* web : http://www.thelia.net */
/* */
/* For the full copyright and license information, please view the LICENSE.txt */
/* file that was distributed with this source code. */
/*************************************************************************************/
namespace CustomerFamily;
use CustomerFamily\Model\CustomerFamilyQuery;
use Propel\Runtime\Connection\ConnectionInterface;
use Symfony\Component\Finder\Finder;
use Thelia\Install\Database;
use Thelia\Module\BaseModule;
use CustomerFamily\Model\CustomerFamily as CustomerFamilyModel;
/**
* Class CustomerFamily
* @package CustomerFamily
* @contributor Etienne Perriere <eperriere@openstudio.fr>
*/
class CustomerFamily extends BaseModule
{
/** @cont string */
const MODULE_DOMAIN = 'customerfamily';
/** @cont string */
const MESSAGE_DOMAIN = 'customerfamily';
/** @cont string */
const CUSTOMER_FAMILY_PARTICULAR = "particular";
/** @cont string */
const CUSTOMER_FAMILY_PROFESSIONAL = "professional";
/**
* @param ConnectionInterface $con
*/
public function postActivation(ConnectionInterface $con = null)
{
try {
CustomerFamilyQuery::create()->findOne();
} catch (\Exception $e) {
$database = new Database($con);
$database->insertSql(null, [__DIR__ . "/Config/thelia.sql"]);
}
//Generate the 2 defaults customer_family
//Customer
self::getCustomerFamilyByCode(self::CUSTOMER_FAMILY_PARTICULAR, "Particulier", "fr_FR");
self::getCustomerFamilyByCode(self::CUSTOMER_FAMILY_PARTICULAR, "Private individual", "en_US");
//Professional
self::getCustomerFamilyByCode(self::CUSTOMER_FAMILY_PROFESSIONAL, "Professionnel", "fr_FR");
self::getCustomerFamilyByCode(self::CUSTOMER_FAMILY_PROFESSIONAL, "Professional", "en_US");
}
public function update($currentVersion, $newVersion, ConnectionInterface $con = null)
{
$finder = Finder::create()
->name('*.sql')
->depth(0)
->sortByName()
->in(__DIR__ . DS . 'Config' . DS . 'update');
$database = new Database($con);
/** @var \SplFileInfo $file */
foreach ($finder as $file) {
if (version_compare($currentVersion, $file->getBasename('.sql'), '<')) {
$database->insertSql(null, [$file->getPathname()]);
}
}
}
/**
* @param $code
* @param null $title
* @param string $locale
*
* @return Model\CustomerFamily
*/
public static function getCustomerFamilyByCode($code, $title = null, $locale = "fr_FR")
{
if ($title == null) {
$title = $code;
}
// Set 'particular' as default family
if ($code == self::CUSTOMER_FAMILY_PARTICULAR) {
$isDefault = 1;
} else {
$isDefault = 0;
}
/** @var CustomerFamilyModel $customerFamily */
if (null == $customerFamily = CustomerFamilyQuery::create()
->useCustomerFamilyI18nQuery()
->filterByLocale($locale)
->endUse()
->filterByCode($code)
->findOne()
) {
//Be sure that you don't create it twice
/** @var CustomerFamilyModel $customerF */
if (null != $customerF = CustomerFamilyQuery::create()->findOneByCode($code)) {
$customerF
->setLocale($locale)
->setTitle($title)
->save();
} else {
$customerFamily = new CustomerFamilyModel();
$customerFamily
->setCode($code)
->setIsDefault($isDefault)
->setLocale($locale)
->setTitle($title)
->save();
}
}
return $customerFamily;
}
}