Development

Changeset 24020

You must first sign up to be able to contribute.

Changeset 24020

Show
Ignore:
Timestamp:
11/16/09 16:30:38 (4 years ago)
Author:
Kris.Wallsmith
Message:

[1.3] added loadHelpers to project:optimize (closes #4556)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/1.3/lib/config/sfApplicationConfiguration.class.php

    r24007 r24020  
    342342      $dirs = array(); 
    343343 
    344       $dirs[sfConfig::get('sf_app_module_dir').'/'.$moduleName.'/actions'] = false; // application 
     344      $dirs[sfConfig::get('sf_app_module_dir').'/'.$moduleName.'/actions'] = false; // application 
    345345 
    346346      foreach ($this->getPluginPaths() as $path) 
     
    348348        if (is_dir($dir = $path.'/modules/'.$moduleName.'/actions')) 
    349349        { 
    350           $dirs[$dir] = true;                                                        // plugins 
     350          $dirs[$dir] = true; // plugins 
    351351        } 
    352352      } 
    353353 
    354       $dirs[$this->getSymfonyLibDir().'/controller/'.$moduleName.'/actions'] = true; // core modules 
     354      if (is_dir($dir = $this->getSymfonyLibDir().'/controller/'.$moduleName.'/actions')) 
     355      { 
     356        $dirs[$dir] = true; // core modules 
     357      } 
    355358 
    356359      $this->cache['getControllerDirs'][$moduleName] = $dirs; 
     
    605608  public function loadHelpers($helpers, $moduleName = '') 
    606609  { 
    607     $dirs = $this->getHelperDirs($moduleName); 
    608610    foreach ((array) $helpers as $helperName) 
    609611    { 
     
    613615      } 
    614616 
    615       $fileName = $helperName.'Helper.php'; 
    616       foreach ($dirs as $dir) 
    617       { 
    618         $included = false; 
    619         if (is_readable($dir.'/'.$fileName)) 
     617      if (isset($this->cache['loadedHelpers'][$moduleName][$helperName])) 
     618      { 
     619        include_once $this->cache['loadedHelpers'][$moduleName][$helperName]; 
     620      } 
     621      else if (isset($this->cache['loadedHelpers'][''][$helperName])) 
     622      { 
     623        include_once $this->cache['loadedHelpers'][''][$helperName]; 
     624      } 
     625      else 
     626      { 
     627        $fileName = $helperName.'Helper.php'; 
     628 
     629        if (!isset($dirs)) 
    620630        { 
    621           include_once($dir.'/'.$fileName); 
    622           $included = true; 
    623           break; 
     631          $dirs = $this->getHelperDirs($moduleName); 
    624632        } 
    625       } 
    626  
    627       if (!$included) 
    628       { 
    629         // search in the include path 
    630         if ((@include_once('helper/'.$fileName)) != 1) 
     633 
     634        foreach ($dirs as $dir) 
    631635        { 
    632           $dirs = array_merge($dirs, explode(PATH_SEPARATOR, get_include_path())); 
    633           $dirs = array_map(array('sfDebug', 'shortenFilePath'), $dirs); 
    634  
    635           throw new InvalidArgumentException(sprintf('Unable to load "%sHelper.php" helper in: %s.', $helperName, implode(', ', $dirs))); 
     636          $included = false; 
     637          if (is_readable($dir.'/'.$fileName)) 
     638          { 
     639            include_once $dir.'/'.$fileName; 
     640            $included = true; 
     641            break; 
     642          } 
    636643        } 
     644 
     645        if (!$included) 
     646        { 
     647          // search in the include path 
     648          if ((@include_once('helper/'.$fileName)) != 1) 
     649          { 
     650            $dirs = array_merge($dirs, explode(PATH_SEPARATOR, get_include_path())); 
     651            $dirs = array_map(array('sfDebug', 'shortenFilePath'), $dirs); 
     652 
     653            throw new InvalidArgumentException(sprintf('Unable to load "%sHelper.php" helper in: %s.', $helperName, implode(', ', $dirs))); 
     654          } 
     655        } 
    637656      } 
    638657 
  • branches/1.3/lib/task/project/sfProjectOptimizeTask.class.php

    r23810 r24020  
    2626    $this->addArguments(array( 
    2727      new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), 
    28       new sfCommandArgument('environment', sfCommandArgument::OPTIONAL, 'The environment name', 'prod'), 
     28      new sfCommandArgument('env', sfCommandArgument::OPTIONAL, 'The environment name', 'prod'), 
    2929    )); 
    3030 
     
    3636The [project:optimize|INFO] optimizes a project for better performance: 
    3737 
    38   [./symfony project:optimizes frontend prod|INFO] 
     38  [./symfony project:optimize frontend prod|INFO] 
    3939 
    4040This task should only be used on a production server. Don't forget to re-run 
     
    5858    } 
    5959 
     60    // recreate configuration without the cache 
     61    $this->setConfiguration($this->createConfiguration($this->configuration->getApplication(), $this->configuration->getEnvironment())); 
     62 
    6063    // initialize the context 
    6164    sfContext::createInstance($this->configuration); 
     
    6972    $templates = $this->findTemplates($modules); 
    7073 
    71     // getTemplateDir() optimization 
    7274    $data['getTemplateDir'] = $this->optimizeGetTemplateDir($modules, $templates); 
    7375    $data['getControllerDirs'] = $this->optimizeGetControllerDirs($modules); 
    7476    $data['getPluginPaths'] = $this->configuration->getPluginPaths(); 
     77    $data['loadHelpers'] = $this->optimizeLoadHelpers($modules); 
    7578 
    7679    if (!file_exists($directory = dirname($target))) 
     
    102105      foreach ($templates[$module] as $template) 
    103106      { 
    104         if (null !== ($dir = $this->configuration->getTemplateDir($module, $template))) 
     107        if (null !== $dir = $this->configuration->getTemplateDir($module, $template)) 
    105108        { 
    106109          $data[$module][$template] = $dir; 
     110        } 
     111      } 
     112    } 
     113 
     114    return $data; 
     115  } 
     116 
     117  protected function optimizeLoadHelpers($modules) 
     118  { 
     119    $data = array(); 
     120 
     121    $finder = sfFinder::type('file')->name('*Helper.php'); 
     122 
     123    // module helpers 
     124    foreach ($modules as $module) 
     125    { 
     126      $helpers = array(); 
     127 
     128      $dirs = $this->configuration->getHelperDirs($module); 
     129      foreach ($finder->in($dirs[0]) as $file) 
     130      { 
     131        $helpers[basename($file, 'Helper.php')] = $file; 
     132      } 
     133 
     134      if (count($helpers)) 
     135      { 
     136        $data[$module] = $helpers; 
     137      } 
     138    } 
     139 
     140    // all other helpers 
     141    foreach ($this->configuration->getHelperDirs() as $dir) 
     142    { 
     143      foreach ($finder->in($dir) as $file) 
     144      { 
     145        $helper = basename($file, 'Helper.php'); 
     146        if (!isset($data[''][$helper])) 
     147        { 
     148          $data[''][$helper] = $file; 
    107149        } 
    108150      }