Development

InstallingSymfonyWithSafeModeEnabled: symfony.safe-mode.patch

You must first sign up to be able to contribute.

InstallingSymfonyWithSafeModeEnabled: symfony.safe-mode.patch

File symfony.safe-mode.patch, 17.2 kB (added by m.schuhfuss, 9 years ago)

Patch for symfony to avoid the usage of php's buggy glob()-function

  • sf.base/autoload/sfSimpleAutoload.class.php

    old new  
    183183  { 
    184184    $finder = sfFinder::type('file')->follow_link()->name('*'.$ext); 
    185185 
    186     if($dirs = glob($dir)) 
     186    if($dirs = sfToolkit::glob($dir)) 
    187187    { 
    188188      foreach ($dirs as $dir) 
    189189      { 
  • sf.base/cache/sfFileCache.class.php

    old new  
    110110    } 
    111111    else 
    112112    { 
    113       $paths = glob($this->getOption('cache_dir').DIRECTORY_SEPARATOR.str_replace(sfCache::SEPARATOR, DIRECTORY_SEPARATOR, $pattern).self::EXTENSION); 
     113      $paths = sfToolkit::glob($this->getOption('cache_dir').DIRECTORY_SEPARATOR.str_replace(sfCache::SEPARATOR, DIRECTORY_SEPARATOR, $pattern).self::EXTENSION); 
    114114    } 
    115115 
    116116    foreach ($paths as $path) 
  • sf.base/config/sfApplicationConfiguration.class.php

    old new  
    296296 
    297297    $dirs[sfConfig::get('sf_app_module_dir').'/'.$moduleName.'/actions'] = false;                                     // application 
    298298 
    299     if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/modules/'.$moduleName.'/actions')) 
     299    if ($pluginDirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').'/*/modules/'.$moduleName.'/actions')) 
    300300    { 
    301301      $dirs = array_merge($dirs, array_combine($pluginDirs, array_fill(0, count($pluginDirs), true))); // plugins 
    302302    } 
     
    323323 
    324324    $dirs[] = sfConfig::get('sf_app_module_dir').'/'.$moduleName.'/templates';                        // application 
    325325 
    326     if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/modules/'.$moduleName.'/templates')) 
     326    if ($pluginDirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').'/*/modules/'.$moduleName.'/templates')) 
    327327    { 
    328328      $dirs = array_merge($dirs, $pluginDirs);                                                        // plugins 
    329329    } 
     
    414414    } 
    415415 
    416416    // plugins 
    417     $pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/i18n'); 
     417    $pluginDirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').'/*/i18n'); 
    418418    if (isset($pluginDirs[0])) 
    419419    { 
    420420      $dirs[] = $pluginDirs[0]; 
     
    447447    } 
    448448 
    449449    // module in plugins 
    450     $pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/modules/'.$moduleName.'/i18n'); 
     450    $pluginDirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').'/*/modules/'.$moduleName.'/i18n'); 
    451451    if (isset($pluginDirs[0])) 
    452452    { 
    453453      $dirs[] = $pluginDirs[0]; 
    454454    } 
    455455 
    456456    // plugins 
    457     $pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/i18n'); 
     457    $pluginDirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').'/*/i18n'); 
    458458    if (isset($pluginDirs[0])) 
    459459    { 
    460460      $dirs[] = $pluginDirs[0]; 
     
    477477    $files = array( 
    478478      sfConfig::get('sf_symfony_lib_dir').'/config/'.$globalConfigPath,              // symfony 
    479479    ); 
    480  
    481     if ($bundledPluginDirs = glob(sfConfig::get('sf_symfony_lib_dir').'/plugins/*/'.$globalConfigPath)) 
     480     
     481    if ($bundledPluginDirs = sfToolkit::glob(sfConfig::get('sf_symfony_lib_dir').'/plugins/*/'.$globalConfigPath)) 
    482482    { 
    483483      $files = array_merge($files, $bundledPluginDirs);                              // bundled plugins 
    484484    } 
    485485 
    486     if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/'.$globalConfigPath)) 
     486    if ($pluginDirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').'/*/'.$globalConfigPath)) 
    487487    { 
    488488      $files = array_merge($files, $pluginDirs);                                     // plugins 
    489489    } 
     
    495495      sfConfig::get('sf_app_cache_dir').'/'.$configPath,                             // generated modules 
    496496    )); 
    497497 
    498     if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/'.$configPath)) 
     498    if ($pluginDirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').'/*/'.$configPath)) 
    499499    { 
    500500      $files = array_merge($files, $pluginDirs);                                     // plugins 
    501501    } 
  • sf.base/config/sfAutoloadConfigHandler.class.php

    old new  
    8080          $finder->prune($entry['exclude'])->discard($entry['exclude']); 
    8181        } 
    8282 
    83         if ($matches = glob($path)) 
     83        if ($matches = sfToolkit::glob($path)) 
    8484        { 
    8585          $files = $finder->in($matches); 
    8686        } 
  • sf.base/config/sfLoader.class.php

    old new  
    3333    { 
    3434      $dirs[] = sfConfig::get('sf_app_module_dir').'/'.$moduleName.'/lib/helper'; // module 
    3535 
    36       if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/modules/'.$moduleName.'/lib/helper')) 
     36      if ($pluginDirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').'/*/modules/'.$moduleName.'/lib/helper')) 
    3737      { 
    3838        $dirs = array_merge($dirs, $pluginDirs);                                  // module plugins 
    3939      } 
     
    4343 
    4444    $dirs[] = sfConfig::get('sf_lib_dir').'/helper';                              // project 
    4545 
    46     if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/lib/helper')) 
     46    if ($pluginDirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').'/*/lib/helper')) 
    4747    { 
    4848      $dirs = array_merge($dirs, $pluginDirs);                                    // plugins 
    4949    } 
  • sf.base/config/sfProjectConfiguration.class.php

    old new  
    147147  { 
    148148    $dirs = array(); 
    149149 
    150     if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/lib/model'))                                   // plugins 
     150    if ($pluginDirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').'/*/lib/model'))                                   // plugins 
    151151    { 
    152152      $dirs = array_merge($dirs, $pluginDirs); 
    153153    } 
     
    169169  { 
    170170    $dirs = array(sfConfig::get('sf_data_dir').'/generator/'.$class.'/'.$theme.'/template');                  // project 
    171171 
    172     if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/data/generator/'.$class.'/'.$theme.'/template')) 
     172    if ($pluginDirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').'/*/data/generator/'.$class.'/'.$theme.'/template')) 
    173173    { 
    174174      $dirs = array_merge($dirs, $pluginDirs);                                                                // plugin 
    175175    } 
    176176 
    177     if ($bundledPluginDirs = glob(sfConfig::get('sf_symfony_lib_dir').'/plugins/*/data/generator/'.$class.'/'.$theme.'/template')) 
     177    if ($bundledPluginDirs = sfToolkit::glob(sfConfig::get('sf_symfony_lib_dir').'/plugins/*/data/generator/'.$class.'/'.$theme.'/template')) 
    178178    { 
    179179      $dirs = array_merge($dirs, $bundledPluginDirs);                                                         // bundled plugin 
    180180    } 
     
    194194  { 
    195195    $dirs = array(sfConfig::get('sf_data_dir').'/generator/'.$class.'/'.$theme.'/skeleton');                  // project 
    196196 
    197     if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/data/generator/'.$class.'/'.$theme.'/skeleton')) 
     197    if ($pluginDirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').'/*/data/generator/'.$class.'/'.$theme.'/skeleton')) 
    198198    { 
    199199      $dirs = array_merge($dirs, $pluginDirs);                                                                // plugin 
    200200    } 
    201201 
    202     if ($bundledPluginDirs = glob(sfConfig::get('sf_symfony_lib_dir').'/plugins/*/data/generator/'.$class.'/'.$theme.'/skeleton')) 
     202    if ($bundledPluginDirs = sfToolkit::glob(sfConfig::get('sf_symfony_lib_dir').'/plugins/*/data/generator/'.$class.'/'.$theme.'/skeleton')) 
    203203    { 
    204204      $dirs = array_merge($dirs, $bundledPluginDirs);                                                         // bundled plugin 
    205205    } 
  • sf.base/i18n/extract/sfI18nModuleExtract.class.php

    old new  
    5757    } 
    5858 
    5959    // Extract from validate/*.yml files 
    60     $validateFiles = glob($moduleDir.'/validate/*.yml'); 
     60    $validateFiles = sfToolkit::glob($moduleDir.'/validate/*.yml'); 
    6161    if (is_array($validateFiles)) 
    6262    { 
    6363      foreach ($validateFiles as $validateFile) 
  • sf.base/plugins/sfPropelPlugin/lib/task/sfPropelBaseTask.class.php

    old new  
    5353  { 
    5454    $finder = sfFinder::type('file')->name('*schema.xml'); 
    5555 
    56     $schemas = array_unique(array_merge($finder->in('config'), $finder->in(glob(sfConfig::get('sf_plugins_dir').DIRECTORY_SEPARATOR.'*'.DIRECTORY_SEPARATOR.'config')))); 
     56    $schemas = array_unique(array_merge($finder->in('config'), $finder->in(sfToolkit::glob(sfConfig::get('sf_plugins_dir').DIRECTORY_SEPARATOR.'*'.DIRECTORY_SEPARATOR.'config')))); 
    5757    if (self::CHECK_SCHEMA === $checkSchema && !count($schemas)) 
    5858    { 
    5959      throw new sfCommandException('You must create a schema.xml file.'); 
     
    8787  { 
    8888    $finder = sfFinder::type('file')->name('*schema.yml'); 
    8989    $dirs = array('config'); 
    90     if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/config')) 
     90    if ($pluginDirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').'/*/config')) 
    9191    { 
    9292      $dirs = array_merge($dirs, $pluginDirs); 
    9393    } 
     
    159159 
    160160  protected function copyXmlSchemaFromPlugins($prefix = '') 
    161161  { 
    162     if($dirs = glob(sfConfig::get('sf_plugins_dir').DIRECTORY_SEPARATOR.'*'.DIRECTORY_SEPARATOR.'config')) 
     162    if($dirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').DIRECTORY_SEPARATOR.'*'.DIRECTORY_SEPARATOR.'config')) 
    163163    { 
    164164      $schemas = sfFinder::type('file')->name('*schema.xml')->in($dirs); 
    165165      foreach ($schemas as $schema) 
  • sf.base/plugins/sfPropelPlugin/lib/task/sfPropelDataLoadTask.class.php

    old new  
    7878    } 
    7979    else 
    8080    { 
    81       if (!$pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/data')) 
     81      if (!$pluginDirs = sfToolkit::glob(sfConfig::get('sf_plugins_dir').'/*/data')) 
    8282      { 
    8383        $pluginDirs = array(); 
    8484      } 
  • sf.base/task/project/sfUpgradeTo11Task.class.php

    old new  
    5555    $baseDir = dirname(__FILE__).'/upgrade1.1/'; 
    5656    $classes = array(); 
    5757 
    58     foreach (glob($baseDir.'*.class.php') as $file) 
     58    foreach (sfToolkit::glob($baseDir.'*.class.php') as $file) 
    5959    { 
    6060      $class = str_replace(array($baseDir, '.class.php'), '', $file); 
    6161 
  • sf.base/task/project/upgrade1.1/sfComponentUpgrade.class.php

    old new  
    2121  public function upgrade() 
    2222  { 
    2323    $phpFinder = $this->getFinder('file')->name('*.php'); 
    24     $dirs = glob(sfConfig::get('sf_apps_dir').'/*/modules/*/actions'); 
     24    $dirs = sfToolkit::glob(sfConfig::get('sf_apps_dir').'/*/modules/*/actions'); 
    2525    foreach ($phpFinder->in($dirs) as $file) 
    2626    { 
    2727      $content = file_get_contents($file); 
  • sf.base/task/project/upgrade1.1/sfLayoutUpgrade.class.php

    old new  
    2121  public function upgrade() 
    2222  { 
    2323    $finder = $this->getFinder('file')->name('*.php'); 
    24     foreach ($finder->in(glob(sfConfig::get('sf_apps_dir').'/*/templates')) as $file) 
     24    foreach ($finder->in(sfToolkit::glob(sfConfig::get('sf_apps_dir').'/*/templates')) as $file) 
    2525    { 
    2626      $content = file_get_contents($file); 
    2727      $content = preg_replace('#\$sf_data\->getRaw\(\'sf_content\'\)#s', '$sf_content', $content, -1, $count); 
  • sf.base/task/project/upgrade1.1/sfUpgrade.class.php

    old new  
    6060  protected function getProjectTemplateDirectories() 
    6161  { 
    6262    return array_merge( 
    63       glob(sfConfig::get('sf_apps_dir').'/*/modules/*/templates'), 
    64       glob(sfConfig::get('sf_apps_dir').'/*/templates') 
     63      sfToolkit::glob(sfConfig::get('sf_apps_dir').'/*/modules/*/templates'), 
     64      sfToolkit::glob(sfConfig::get('sf_apps_dir').'/*/templates') 
    6565    ); 
    6666  } 
    6767 
     
    7070   */ 
    7171  protected function getProjectActionDirectories() 
    7272  { 
    73     return glob(sfConfig::get('sf_apps_dir').'/*/modules/*/actions'); 
     73    return sfToolkit::glob(sfConfig::get('sf_apps_dir').'/*/modules/*/actions'); 
    7474  } 
    7575 
    7676  /** 
     
    7979  protected function getProjectLibDirectories() 
    8080  { 
    8181    return array_merge( 
    82       glob(sfConfig::get('sf_apps_dir').'/*/modules/*/lib'), 
    83       glob(sfConfig::get('sf_apps_dir').'/*/lib'), 
     82      sfToolkit::glob(sfConfig::get('sf_apps_dir').'/*/modules/*/lib'), 
     83      sfToolkit::glob(sfConfig::get('sf_apps_dir').'/*/lib'), 
    8484      array( 
    8585        sfConfig::get('sf_apps_dir').'/lib', 
    8686        sfConfig::get('sf_lib_dir'), 
     
    9494  protected function getProjectConfigDirectories() 
    9595  { 
    9696    return array_merge( 
    97       glob(sfConfig::get('sf_apps_dir').'/*/modules/*/config'), 
    98       glob(sfConfig::get('sf_apps_dir').'/*/config'), 
    99       glob(sfConfig::get('sf_config_dir')) 
     97      sfToolkit::glob(sfConfig::get('sf_apps_dir').'/*/modules/*/config'), 
     98      sfToolkit::glob(sfConfig::get('sf_apps_dir').'/*/config'), 
     99      sfToolkit::glob(sfConfig::get('sf_config_dir')) 
    100100    ); 
    101101  } 
    102102 
  • sf.base/util/sfToolkit.class.php

    old new  
    100100   */ 
    101101  public static function clearGlob($pattern) 
    102102  { 
    103     $files = glob($pattern); 
     103    $files = sfToolkit::glob($pattern); 
    104104 
    105105    // order is important when removing directories 
    106106    sort($files); 
     
    813813 
    814814    return $string; 
    815815  } 
     816 
     817  /** 
     818   * replacement for php's glob()-function which doesn't work on systems with  
     819   * php < 5.2.5 and safe-mode enabled. 
     820   * 
     821   * The bug is further described here: {@link http://bugs.php.net/bug.php?id=41655} 
     822   * please note that this method is far slower than the php-function. 
     823   * 
     824   * @param  string $expr  the glob-expression as it would be used in the glob()-function. 
     825   * 
     826   * @return array  an array of  
     827   */ 
     828  public static function glob($expr) { 
     829    if($tmp = @glob($expr)) { return $tmp; } 
     830 
     831    $parts = explode(DIRECTORY_SEPARATOR, $expr); 
     832    $searchedDirs = array(""); 
     833     
     834    while(null !== ($part = array_shift($parts))) 
     835    { 
     836      if($part === "") { continue; } 
     837       
     838      if(!preg_match("/[*?]/", $part)) 
     839      { 
     840        foreach($searchedDirs as $idx => $dir) 
     841        { 
     842          $searchedDirs[$idx] .= DIRECTORY_SEPARATOR . $part; 
     843        } 
     844         
     845        continue; 
     846      } 
     847 
     848      if(count($parts) > 0) 
     849      { 
     850        $searchedDirs = sfFinder::type('dir')->name($part)->maxdepth(0)->in($searchedDirs); 
     851      } 
     852      else 
     853      { 
     854        $searchedDirs = sfFinder::type('any')->name($part)->maxdepth(0)->in($searchedDirs); 
     855      } 
     856    } 
     857     
     858    return $searchedDirs; 
     859  } 
    816860} 
  • sf.base/vendor/lime/lime.php

    old new  
    10101010 
    10111011  public function register_glob($glob) 
    10121012  { 
    1013     if ($dirs = glob($glob)) 
     1013    if ($dirs = sfToolkit::glob($glob)) 
    10141014    { 
    10151015      foreach ($dirs as $file) 
    10161016      {