/**
  * Return a JS file in the container in links.
  *
  * @param string $content_js string   content js value
  * @param string $content_html string content html value
  * @param string $path_prefix string  prefix repository value
  * @param string $result              ['both', 'html', 'linkJs']
  * 
  * @return string
  * @access public
  * @author Etienne de Longeaux <*****@*****.**>
  */
 public function renderScript($content_js, $content_html, $path_prefix = '/', $result = "both")
 {
     $TEMP_FILES_DIR = $this->getContainer()->getParameter("kernel.root_dir") . "/../web/yui/js/" . $path_prefix;
     // we create repository if does not exit
     PiFileManager::mkdirr($TEMP_FILES_DIR, 0777);
     //  we create single file from all input
     $input_hash = sha1($content_js);
     $file = $TEMP_FILES_DIR . $input_hash . '.js';
     // we compress the content
     if (!file_exists($file)) {
         $this->getContainer()->get('sfynx.tool.file_manager')->save($file, $content_js, 0777);
     }
     // we set result
     $this->getContainer()->get('sfynx.tool.twig.extension.layouthead')->addJsFile("yui/js/" . $input_hash . '.js');
     $resultScript = '<script type="text/javascript" src="/yui/js/' . $path_prefix . $input_hash . '.js" ></script>';
     // we return the result
     if ($result == "both") {
         return $content_html . $resultScript;
     } elseif ($result == "html") {
         return $content_html;
     } elseif ($result == "linkJs") {
         return $resultScript;
     } else {
         return $content_html . "\n            <script type='text/javascript'>\n            //<![CDATA[\n            " . $content_js . "\n            //]]>\n            </script>\n            ";
     }
 }
 /**
  * Constructor.
  *
  * @param \Symfony\Component\DependencyInjection\ContainerInterface $container
  */
 public function __construct(ContainerInterface $container)
 {
     parent::__construct($container);
     $dossier = $this->container->getParameter('pi_app_admin.cache_dir.indexation');
     if (\Sfynx\ToolBundle\Util\PiFileManager::mkdirr($dossier, 0777)) {
         $this->_indexPath = $dossier . self::NAME_INDEX;
     } else {
         throw new \InvalidArgumentException("The Indexation cache repository is not created correctly");
     }
 }
 /**
  * The execute method
  *
  * @param InputInterface  $input  The Input class
  * @param OutputInterface $output The output class
  *
  * @access protected
  * @return void
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $start_date = time();
     $this->em = $this->getContainer()->get('doctrine')->getManager('default');
     $root_dir = $this->getContainer()->getParameter("kernel.root_dir") . "/config/gatling/data";
     PiFileManager::mkdirr($root_dir, 0777);
     $path = $root_dir . "/connexion_sfynx.csv";
     file_put_contents($path, 'username,password' . "\n", LOCK_EX);
     //
     $firstId = (int) $input->getOption('firstId');
     $lastId = (int) $input->getOption('lastId');
     $output->writeln('First id user : '******'last id user : '******'fr_FR', :user, :user, :user, :user, 1, '73rwkq08i3wo0ow840c0g48k800o0ok', " . "'xREF5HHqHbZmlmoO3+s5BXtVtYa3TIf8Wv+IVXJsQwx+0FG1WnqxjJ46toQ1u/+v1lfKOwo90FqEbqiPDzDo+g==', '2014-11-13 00:00:00', " . "0, 0, NULL, NULL, NULL, 'a:1:{i:0;s:9:\"ROLE_USER\";}', 'a:4:{i:0;s:4:\"VIEW\";i:1;s:4:\"EDIT\";i:2;s:6:\"CREATE\";i:3;s:6:\"DELETE\";}', 0, NULL, :user, :user, '2014-11-12 17:55:21' " . ");";
     $this->em->getConnection()->beginTransaction();
     $stmtuser = $this->em->getConnection()->prepare($sqluser);
     try {
         $psw = "user";
         $start_date_user = time();
         for ($j = $firstId; $j <= $lastId; $j++) {
             $user_value = 'user' . $j;
             $params = array('id' => $j, 'user' => $user_value, 'user' => $user_value, 'user' => $user_value, 'user' => $user_value, 'user' => $user_value, 'user' => $user_value);
             $stmtuser->execute($params);
             //
             file_put_contents($path, "{$user_value},{$psw}\n", FILE_APPEND);
         }
         $end_date_user = time();
         $duration_user = $end_date_user - $start_date_user;
         $output->writeln(" - fin de chargement de données des users en " . $duration_user . "s");
         $this->em->flush();
         // Try and commit the transaction
         $this->em->getConnection()->commit();
     } catch (\Exception $e) {
         $output->writeln($e->getMessage());
         // Rollback the failed transaction attempt
         $this->em->getConnection()->rollback();
         $this->em->close();
     }
     $end_date = time();
     $duration = $end_date - $start_date;
     $output->writeln(" - fin de chargement de donnée en " . $duration . "s");
 }
 /**
  * Return the url of a media (and put the result in cache).
  *
  * @param string $id
  * @param string $format   ["default_small", "default_big", "reference"]
  * @param string $cachable
  *
  * @return string
  * @access public
  * @author Etienne de Longeaux <*****@*****.**>
  */
 public function getMediaUrlFunction($id, $format = "small", $cachable = true, $modifdate = false, $pattern = "media_")
 {
     if ($modifdate instanceof \Datetime) {
         $timestamp = $modifdate->getTimestamp();
     } elseif (is_string($modifdate)) {
         $timestamp = $modifdate;
     } else {
         $timestamp = 0;
     }
     try {
         if (!$cachable) {
             $url_public_media = $this->container->get('sonata.media.twig.extension')->path($id, $format) . "?v.{$timestamp}";
         } else {
             $dossier = $this->container->getParameter("sfynx.core.cache_dir.media");
             PiFileManager::mkdirr($dossier, 0777);
             $this->container->get("sfynx.cache.filecache")->getClient()->setPath($dossier);
             $url_public_media = $this->container->get("sfynx.cache.filecache")->get($format . $pattern . $id . '_' . $timestamp);
             if (!$url_public_media) {
                 $url_public_media = $this->container->get('sonata.media.twig.extension')->path($id, $format) . "?v.{$timestamp}";
                 $this->container->get("sfynx.cache.filecache")->set($format . $pattern . $id . '_' . $timestamp, $url_public_media, 0);
             }
         }
     } catch (\Exception $e) {
         $url_public_media = "";
     }
     $src = $this->container->get('kernel')->getRootDir() . '/../web' . $url_public_media;
     if ((empty($url_public_media) || !file_exists($src)) && $format != 'reference') {
         return $this->getMediaUrlFunction($id, "reference", $cachable, $modifdate, $pattern);
     } else {
         return $url_public_media;
     }
 }
 /**
  * We set the path of the all failure login filecache.
  *
  * @return void
  * @author Etienne de Longeaux <*****@*****.**>
  */
 public function setCachePath()
 {
     // we create path
     $dossier = $this->container->getParameter("sfynx.auth.loginfailure.cache_dir");
     PiFileManager::mkdirr($dossier, 0777);
     $this->container->get("sfynx.cache.filecache")->getClient()->setPath($dossier);
 }
 /**
  * Save a content in the log file.
  *
  * @param integer $flag Flag value
  * @param octal   $mode mode file
  * 
  * @return mixed    return 0 if the file is save correctly, otherwise return the instance.
  * @access public
  * @author Etienne de Longeaux <*****@*****.**>
  */
 public function save($flag = FILE_APPEND, $mode = 0777)
 {
     if (\Sfynx\ToolBundle\Util\PiFileManager::mkdirr(dirname($this->_file), $mode)) {
         $result = file_put_contents($this->_file, PHP_EOL . implode("\n", $this->_info), $flag);
     } else {
         $result = false;
     }
     if ($result) {
         return $this;
     } else {
         return false;
     }
 }
 /**
  * Event handler that renders not found page
  * in case of a NotFoundHttpException
  *
  * @param GetResponseForExceptionEvent $event
  *
  * @access public
  * @return void
  * @author Riad Hellal <*****@*****.**>
  */
 public function onKernelException(GetResponseForExceptionEvent $event)
 {
     $this->request = $event->getRequest($event);
     // provide the better way to display a enhanced error page only in prod environment, if you want
     if (in_array($this->kernel->getEnvironment(), array('test', 'prod'))) {
         // exception object
         $exception = $event->getException();
         // new Response object
         $response = new Response();
         //$requestDuplicate = $this->request->duplicate(null, null, ['_controller' => 'MyAppSiteBundle:Default:exception']);
         //$response = $this->kernel->handle($requestDuplicate, HttpKernelInterface::SUB_REQUEST);
         if ($this->container->hasParameter('sfynx.auth.theme.layout.error.html') && $this->container->getParameter('sfynx.auth.theme.layout.error.html') != "") {
             $path_error_file = realpath($this->kernel->locateResource($this->container->getParameter('sfynx.auth.theme.layout.error.html')));
             $response->setContent(file_get_contents($path_error_file));
         } else {
             if ($this->container->hasParameter('sfynx.auth.theme.layout.error.route_name') && $this->container->getParameter('sfynx.auth.theme.layout.error.route_name') != "") {
                 $route_name = $this->container->getParameter('sfynx.auth.theme.layout.error.route_name');
             } else {
                 $route_name = 'error_404';
             }
             $url = $this->container->get('sfynx.tool.route.factory')->getRoute($route_name, array('locale' => $this->locale));
             $content = PiFileManager::getCurl('/' . $url, null, null, $this->request->getUriForPath(''));
             $response->setContent($content);
         }
         // HttpExceptionInterface is a special type of exception
         // that holds status code and header details
         if (method_exists($exception, "getStatusCode")) {
             $response->setStatusCode($exception->getStatusCode());
         } else {
             $response->setStatusCode('404');
         }
         if (method_exists($response, "getHeaders")) {
             $response->headers->replace($exception->getHeaders());
         }
         // set the new $response object to the $event
         $event->setResponse($response);
     }
 }
 /**
  * List of all countries.
  *
  * @link https://github.com/umpirsky/country-list/blob/master/country/cldr/en/country.php
  * @param string $locale
  * @access public
  * @return array
  * @static
  *
  * @author Etienne de Longeaux <*****@*****.**>
  */
 public static function allCountries($locale, $strtolowerKeys = true)
 {
     //         // we get the current directory.
     //         $path = realpath(dirname(__FILE__) . "/Countries/cldr");
     //         $all_files = \Sfynx\ToolBundle\Util\PiFileManager::ListFiles($path, "json");
     //         foreach($all_files as $key => $path_file){
     //             $dir_path_win     = explode('\\', realpath(dirname($path_file)));
     //             $dir_path_linux = explode('//', realpath(dirname($path_file)));
     //             $local_value_win     = end($dir_path_win);
     //             $local_value_linux = end($dir_path_linux);
     //             if ($local_value_win != realpath(dirname($path_file))){
     //                 $new_path = realpath(dirname(__FILE__)) . "/Countries/" . $local_value_win . "_country.json";
     //                 copy($path_file, $new_path);
     //                 print_r($local_value_win);
     //                 print_r("<br />");
     //             }
     //         }
     //         exit;
     // we get the current directory.
     $path = realpath(dirname(__FILE__) . "/Countries");
     // we create the file name.
     //$locale = strtolower($locale);
     $file = "{$locale}_country.json";
     // we take all json files existing.
     $all_files = \Sfynx\ToolBundle\Util\PiFileManager::getFilesByType($path, "json");
     //print_r(file_get_contents($path.'/'.$file));exit;
     //print_r(get_object_vars(json_decode(file_get_contents(realpath($path.'/'.$file)))));exit;
     // we return the country.jon content file if it's existed.
     if (in_array($file, $all_files)) {
         $all_countries = get_object_vars(json_decode(file_get_contents(realpath($path . '/' . $file))));
     } else {
         $all_countries = get_object_vars(json_decode(file_get_contents(realpath($path . '/en_country.json'))));
     }
     asort($all_countries);
     if ($strtolowerKeys) {
         $news_key = array_map(function ($key) {
             return (string) strtolower($key);
         }, array_keys($all_countries));
         return array_combine($news_key, array_values($all_countries));
     } else {
         return $all_countries;
     }
 }
 /**
  * Sets the SEO url valule if is a old url.
  *
  * @access protected
  * @return false|RedirectResponse
  * @author Etienne de Longeaux <*****@*****.**>
  */
 protected function isNoScope()
 {
     $locale = $this->request->getLocale();
     if ($this->is_scop_authorized && $this->container->has("sfynx.browser.lib.mobiledetect") && $this->container->has("sfynx.browser.lib.browscap")) {
         // we get the browser
         \Sfynx\ToolBundle\Util\PiFileManager::mkdirr($this->browscap_cache_dir, 0777);
         if ($this->request->attributes->has('sfynx-browser')) {
             $this->browser = $this->request->attributes->get('sfynx-browser');
         } else {
             $this->browser = $this->container->get("sfynx.browser.lib.browscap")->getBrowser();
         }
         if ($this->request->attributes->has('sfynx-mobiledetect')) {
             $this->mobiledetect = $this->request->attributes->get('sfynx-mobiledetect');
         } else {
             $this->mobiledetect = $this->container->get("sfynx.browser.lib.mobiledetect");
         }
         // we set globals information
         $globals = $this->scop_globals;
         $nav_desktop = strtolower($this->browser->Browser);
         $nav_mobile = strtolower($this->browser->Platform);
         $isNoScope = false;
         if (!$this->browser->isMobileDevice && (!isset($globals["navigator"][$nav_desktop]) || floatval($this->browser->Version) <= $globals["navigator"][$nav_desktop])) {
             $isNoScope = true;
         } elseif ($this->browser->isMobileDevice && !$this->mobiledetect->isTablet() && (!isset($globals["mobile"][$nav_mobile]) || floatval($this->browser->Platform_Version) <= $globals["mobile"][$nav_mobile])) {
             $isNoScope = true;
         } elseif ($this->browser->isMobileDevice && $this->mobiledetect->isTablet() && (!isset($globals["tablet"][$nav_mobile]) || floatval($this->browser->Platform_Version) <= $globals["tablet"][$nav_mobile])) {
             $isNoScope = true;
         }
         if ($this->browser->Version == 0.0 || $this->browser->Platform_Version == 0.0) {
             $isNoScope = false;
         }
         if ($isNoScope) {
             if (!$this->browser->isMobileDevice) {
                 if (isset($globals["navigator"][$nav_desktop]) && floatval($this->browser->Version) <= $globals["navigator"][$nav_desktop]) {
                     $isNav = false;
                 } else {
                     $isNav = true;
                 }
             } elseif ($bc->getBrowser()->isMobileDevice) {
                 if (isset($globals["navigator"][$nav_mobile]) && floatval($this->browser->Platform_Version) <= $globals["navigator"][$nav_mobile]) {
                     $isNav = false;
                 } else {
                     $isNav = true;
                 }
             }
             $isCookies = $this->browser->Cookies;
             $isJs = $this->browser->JavaScript;
             // we set response
             $response = new \Symfony\Component\HttpFoundation\Response($this->request->getUri());
             $response->headers->set('Content-Type', 'text/html');
             $response = $this->container->get('templating')->renderResponse('SfynxTemplateBundle:Template\\Nonav:nonav.html.twig', array('locale' => $locale, 'isCookies' => $isCookies, 'isJs' => $isJs, 'isNav' => $isNav), $response);
             // we apply all events allowed to change the response
             $event_response = new ResponseEvent($response, $this->date_expire);
             $this->container->get('event_dispatcher')->dispatch(SfynxCmfEvents::HANDLER_REQUEST_CHANGERESPONSE_NOSCOPE, $event_response);
             $response = $event_response->getResponse();
             return $response;
         }
     }
     return false;
 }
 /**
  * Executes the compression command in shell
  *
  * @param string $result            ['path', 'content']
  * @param string $compressor        ['yui', 'php_js', 'php_css']
  *
  * @return string    file path result
  * @access public
  *
  * @author Etienne de Longeaux <*****@*****.**>
  */
 private function compress($result = "path", $compressor = "yui")
 {
     // we get the value of css_js_cache_file param
     $is_refresh_css_js_cache_file = $this->container->getParameter("pi_app_admin.page.refresh.css_js_cache_file");
     // we create csss and js repository if does not exist
     \Sfynx\ToolBundle\Util\PiFileManager::mkdirr($this->container->getParameter("kernel.root_dir") . '/../web/yui/css', 0777);
     \Sfynx\ToolBundle\Util\PiFileManager::mkdirr($this->container->getParameter("kernel.root_dir") . '/../web/yui/js', 0777);
     // create the input
     foreach ($this->files as $file) {
         $basePath = str_replace($this->container->getParameter("kernel.root_dir") . '/../web/', '', dirname($file));
         if (strtolower($this->options['type']) == "css") {
             $content_file = str_replace(array('url("', "url('", "')", '")'), array('url(', 'url(', ')', ')'), file_get_contents($file));
             $content_file = str_replace(array('url('), array('url(../../' . $basePath . '/'), $content_file);
             $content_file = str_replace('@import "', "   @import \"../../" . $basePath . "/", $content_file);
             $content_file = str_replace('";', '";   ', $content_file);
             $this->string .= $content_file;
         } else {
             $this->string .= file_get_contents($file);
         }
     }
     if (preg_match_all('/@import "([^`]*?)";/i', $this->string, $allImports, PREG_SET_ORDER)) {
         $this->string = preg_replace_callback('/@import "([^`]*?)";/i', function ($matches) {
             return "";
         }, $this->string);
         foreach ($allImports as $k => $import) {
             $this->string = $import[0] . "  " . $this->string;
         }
     }
     // create single file from all input
     $input_hash = sha1($this->string);
     // create path file
     $nameFile = strtolower($this->options['type']) . '/' . $input_hash . '.' . strtolower($this->options['type']);
     $file = $this->TEMP_FILES_DIR . '/' . $nameFile;
     // we compress the content
     if ($is_refresh_css_js_cache_file && !file_exists($file) && $this->container->get('sfynx.tool.file_manager')->save($file, $this->string, 0777)) {
         switch (true) {
             case $compressor == "yui":
                 // start with basic command
                 $cmd = "java -Xmx32m -jar " . escapeshellarg($this->JAR_PATH) . ' ' . escapeshellarg($file) . " --charset UTF-8";
                 // set the file type
                 $cmd .= " --type " . (strtolower($this->options['type']) == "css" ? "css" : "js");
                 // and add options as needed
                 if ($this->options['linebreak'] && intval($this->options['linebreak']) > 0) {
                     $cmd .= ' --line-break ' . intval($this->options['linebreak']);
                 }
                 if ($this->options['verbose']) {
                     $cmd .= " -v";
                 }
                 if ($this->options['nomunge']) {
                     $cmd .= ' --nomunge';
                 }
                 if ($this->options['semi']) {
                     $cmd .= ' --preserve-semi';
                 }
                 if ($this->options['nooptimize']) {
                     $cmd .= ' --disable-optimizations';
                 }
                 // execute the command
                 exec($cmd . ' 2>&1', $raw_output);
                 // add line breaks to show errors in an intelligible manner
                 $flattened_output = implode("\n", $raw_output);
                 // we put the compressor content in the file.
                 file_put_contents($file, $flattened_output);
                 break;
             case $compressor == "php_js":
                 $flattened_output = str_replace("/*\n", "\n\n /*\n", $this->string);
                 $flattened_output = str_replace("/*!\n", "\n\n /*!\n", $flattened_output);
                 // we put the compressor content in the file.
                 file_put_contents($file, $flattened_output);
                 break;
             case $compressor == "php_css":
                 // Remove comments
                 $flattened_output = $this->container->get('sfynx.tool.string_manager')->remove_comment_in_css_file($this->string);
                 // Remove space after colons
                 $flattened_output = str_replace(': ', ':', $flattened_output);
                 // Remove whitespace
                 $flattened_output = $this->container->get('sfynx.tool.string_manager')->cleanWhitespace($flattened_output);
                 // we put the compressor content in the file.
                 file_put_contents($file, $flattened_output);
                 break;
             default:
                 // use default
                 break;
         }
     }
     // we initialize the content.
     $this->string = "";
     // we return result
     switch (true) {
         case $result == "content":
             if (file_exists($file)) {
                 return file_get_contents($file);
             } else {
                 return '';
             }
         case $result == "path":
             return $input_hash;
         default:
             return "";
     }
 }
 /**
  * Create the repository of the cache widget files
  *
  * @return string   path value
  * @access public
  * @author Etienne de Longeaux <*****@*****.**>
  * @since  2014-06-21
  */
 public function createCacheWidgetRepository()
 {
     $path = $this->container->getParameter("pi_app_admin.cache_dir.widget");
     PiFileManager::mkdirr($path, 0777);
     return $path;
 }
 /**
  * Delete the cache of all elements of an entity (Page, TranslationPages, widgets)
  *
  * @param object $entity Page or TranslationPage entity
  * @param string $type   ['persist', 'update', 'remove']
  * 
  * @return string
  * @access public
  * @author Etienne de Longeaux <*****@*****.**>
  * @since  2014-06-07
  */
 public function cachePage($entity, $type)
 {
     if ($entity instanceof TranslationPage) {
         $entity = $entity->getPage();
     }
     if ($entity instanceof Page) {
         $path_page_json_file = $this->createJsonFileName('page-json', $entity->getRouteName());
         if (in_array($type, array('persist', 'update'))) {
             $reports = serialize($entity);
             $result = \Sfynx\ToolBundle\Util\PiFileManager::save($path_page_json_file, $reports, 0777, LOCK_EX);
         } elseif ($type == 'remove') {
             if (file_exists($path_page_json_file)) {
                 unlink($path_page_json_file);
             }
         }
     }
 }
 /**
  * Sets the specific sortOrders.
  * 
  * @param string $domain    The domain
  * @param string $extension The extension name
  * 
  * @return void
  * @access public
  */
 public function createTranslationFiles($domain = "messages", $extension = "yml")
 {
     $foundBundle = $this->container->get('kernel')->getBundle('SfynxTranslatorBundle');
     $basePath = $foundBundle->getPath() . "/Resources/translations/";
     $transfiles = PiFileManager::GlobFiles($basePath . '*.' . $extension);
     // more fast in linux but not in windows
     $dir = PiFileManager::mkdirr($basePath);
     if (count($transfiles) == 0) {
         $all_locales = $this->container->get('sfynx.auth.locale_manager')->getAllLocales();
         foreach ($all_locales as $key => $lang) {
             $filename = $basePath . $domain . "." . $lang . "." . $extension;
             @file_put_contents($filename, '', LOCK_EX);
         }
     }
 }
 /**
  * Sets the the path where will be write the backup file.
  * 
  * @param array $options
  * @return void
  * @access protected
  *
  * @author Etienne de Longeaux <*****@*****.**>
  * @since 2012-02-03
  */
 protected function setPath(array $options = null)
 {
     if (isset($options['path']) && !empty($options['path'])) {
         $path = $options['path'];
     } else {
         $path = $this->getContainer()->get('kernel')->getRootDir() . '\\cache\\Backup';
     }
     if (isset($options['filename']) && !empty($options['filename'])) {
         $filename = '/' . $options['filename'];
     } else {
         $filename = '/doctrine_backup_database-' . $this->getDatabase() . '_' . date('Y-m-d-H-i-s') . '.sql';
     }
     if (\Sfynx\ToolBundle\Util\PiFileManager::mkdirr($path, 0777)) {
         $this->path = realpath($path);
         $this->path = $this->path . $filename;
     }
 }
 /**
  * Put result content in cache with ttl.
  *
  * @author Etienne de Longeaux <*****@*****.**>
  */
 protected function setCacheFunction($key, $ttl, $newvalue)
 {
     $dossier = $this->container->getParameter("kernel.root_dir") . "/cache/widget/";
     \Sfynx\ToolBundle\Util\PiFileManager::mkdirr($dossier, 0777);
     $this->container->get("sfynx.cache.filecache")->getClient()->setPath($dossier);
     // important : if ttl is equal to zero then the cache is infini
     $this->container->get("sfynx.cache.filecache")->set($key, $newvalue, $ttl);
 }
 /**
  * Invoked to modify the controller that should be executed.
  *
  * @param GetResponseEvent $event The event
  * 
  * @access public
  * @return void
  * @author Etienne de Longeaux <*****@*****.**>
  */
 public function onKernelRequest(GetResponseEvent $event)
 {
     if (HttpKernel::MASTER_REQUEST != $event->getRequestType()) {
         // ne rien faire si ce n'est pas la requête principale
         return;
     }
     // Set request
     $this->request = $event->getRequest($event);
     // Sets parameter template values.
     $this->setParams();
     //
     if ($this->request->cookies->has('sfynx-layout')) {
         $this->layout = $this->request->cookies->get('sfynx-layout');
     } else {
         $this->layout = $this->container->getParameter('sfynx.auth.theme.layout.front.pc') . $this->init_pc_layout;
     }
     if ($this->request->cookies->has('sfynx-screen')) {
         $this->screen = $this->request->cookies->get('sfynx-screen');
     } else {
         $this->screen = "layout";
     }
     if ($this->is_browser_authorized && !$this->request->cookies->has('sfynx-layout') && $this->container->has("sfynx.browser.lib.mobiledetect") && $this->container->has("sfynx.browser.lib.browscap")) {
         // we get the browser
         PiFileManager::mkdirr($this->browscap_cache_dir, 0777);
         if ($this->request->attributes->has('sfynx-browser')) {
             $this->browser = $this->request->attributes->get('sfynx-browser');
         } else {
             $this->browser = $this->container->get("sfynx.browser.lib.browscap")->getBrowser();
         }
         if ($this->request->attributes->has('sfynx-mobiledetect')) {
             $this->mobiledetect = $this->request->attributes->get('sfynx-mobiledetect');
         } else {
             $this->mobiledetect = $this->container->get("sfynx.browser.lib.mobiledetect");
         }
         //
         $this->request->attributes->set('sfynx-browser', $this->browser);
         $this->request->attributes->set('sfynx-mobiledetect', $this->mobiledetect);
         //
         if ($this->browser->isMobileDevice) {
             if (!$this->mobiledetect->isTablet()) {
                 $this->screen = "layout-poor";
             } elseif ($this->mobiledetect->isTablet()) {
                 $this->screen = "layout-medium";
             } else {
                 $this->screen = 'layout-medium';
             }
             $this->layout = $this->container->getParameter('sfynx.auth.theme.layout.front.mobile') . $this->init_mobile_layout . '\\' . $this->screen . '.html.twig';
             $this->request->setRequestFormat('mobile');
         }
     }
     // we add sfynx-layout and sfynx-screen info in the request
     $this->request->attributes->set('sfynx-layout', $this->layout);
     $this->request->attributes->set('sfynx-screen', $this->screen);
 }
 /**
  * upload attached files
  *
  * @param void|array $files The files value
  *
  * @access public
  * @return array
  * @author Etienne de Longeaux <*****@*****.**>
  */
 public function uploadAttached($files = array())
 {
     $list_files = array();
     $dir = $this->container->get('kernel')->getRootDir() . '/../web/uploads/attachements/';
     \Sfynx\ToolBundle\Util\PiFileManager::mkdirr($dir);
     foreach ($files as $inputname => $file) {
         $list_files[$inputname] = $dir . $file['name'];
         move_uploaded_file($file['tmp_name'], $list_files[$inputname]);
         $this->files[] = $dir . $file['name'];
     }
     return $list_files;
 }