Merge pull request #611 from 202-ecommerce/fix_translation

[-] BO : Fix while of translation, to find in folder if translation exists
This commit is contained in:
Gregory Roussac
2013-07-29 10:07:50 -07:00

View File

@@ -2353,9 +2353,12 @@ class AdminTranslationsControllerCore extends AdminController
$files_by_directiories = $this->getFileToParseByTypeTranslation();
foreach ($files_by_directiories['php'] as $dir => $files)
foreach ($files as $file)
if (Tools::file_exists_cache($dir.$file) && is_file($dir.$file) && !in_array($file, self::$ignore_folder) && preg_match('/\.php$/', $file))
foreach ($files as $file) {
// If file exist and is not in ignore_folder, in the next step we check if a folder or mail
if (Tools::file_exists_cache($dir.$file) && !in_array($file, self::$ignore_folder) ) {
$subject_mail = $this->getSubjectMail($dir, $file, $subject_mail);
}
}
// Get path of directory for find a good path of translation file
if ($this->theme_selected && @filemtime($this->translations_informations[$this->type_selected]['override']['dir']))
@@ -2410,30 +2413,40 @@ class AdminTranslationsControllerCore extends AdminController
*/
protected function getSubjectMail($dir, $file, $subject_mail)
{
$content = file_get_contents($dir.'/'.$file);
$content = str_replace("\n", ' ', $content);
// If is file and is not in ignore_folder
if (is_file($dir.'/'.$file) && !in_array($file, self::$ignore_folder) && preg_match('/\.php$/', $file))
{
$content = file_get_contents($dir.'/'.$file);
$content = str_replace("\n", ' ', $content);
// Subject must match with a template, therefor we first grep the Mail::Send() function then the Mail::l() inside.
if (preg_match_all('/Mail::Send([^;]*);/si', $content, $tab))
for ($i = 0; isset($tab[1][$i]); $i++)
{
$tab2 = explode(',', $tab[1][$i]);
if (is_array($tab2) && isset($tab2[1]))
// Subject must match with a template, therefor we first grep the Mail::Send() function then the Mail::l() inside.
if (preg_match_all('/Mail::Send([^;]*);/si', $content, $tab)) {
for ($i = 0; isset($tab[1][$i]); $i++)
{
$template = trim(str_replace('\'', '', $tab2[1]));
foreach ($tab2 as $tab3)
if (preg_match('/Mail::l\(\''._PS_TRANS_PATTERN_.'\'\)/Us', $tab3.')', $matches))
{
if (!isset($subject_mail[$template]))
$subject_mail[$template] = array();
if (!in_array($matches[1], $subject_mail[$template]))
$subject_mail[$template][] = $matches[1];
}
$tab2 = explode(',', $tab[1][$i]);
if (is_array($tab2) && isset($tab2[1]))
{
$template = trim(str_replace('\'', '', $tab2[1]));
foreach ($tab2 as $tab3)
if (preg_match('/Mail::l\(\''._PS_TRANS_PATTERN_.'\'\)/Us', $tab3.')', $matches))
{
if (!isset($subject_mail[$template]))
$subject_mail[$template] = array();
if (!in_array($matches[1], $subject_mail[$template]))
$subject_mail[$template][] = $matches[1];
}
}
}
}
if (!in_array($file, self::$ignore_folder) && is_dir($dir.'/'.$file))
$subject_mail = $this->getSubjectMail($dir, $file, $subject_mail);
}
// Of if is colder, we scan colder for check if find in folder and subfolder
else if (!in_array($file, self::$ignore_folder) && is_dir($dir.'/'.$file))
{
foreach( scandir($dir.'/'.$file ) as $temp )
{
$subject_mail = $this->getSubjectMail($dir.'/'.$file, $temp, $subject_mail);
}
}
return $subject_mail;
}