public function download()
 {
     $this->logSection('sympal', sprintf('Downloading Sympal plugin "%s"', $this->_pluginName));
     $success = false;
     try {
         $this->logSection('sympal', '...trying to download plugin via PEAR');
         chdir(sfConfig::get('sf_root_dir'));
         $pluginInstall = new sfPluginInstallTask($this->_dispatcher, $this->_formatter);
         $ret = @$pluginInstall->run(array($this->_pluginName), array());
         if (!sfSympalPluginToolkit::isPluginInstalled($this->_pluginName)) {
             $this->logSection('sympal', '...could not download plugin via PEAR', null, 'ERROR');
             $success = false;
         } else {
             $success = true;
         }
     } catch (Exception $e) {
         $success = false;
         $this->logSection('sympal', '...exception thrown while downloading from PEAR: ' . $e->getMessage(), null, 'ERROR');
     }
     if (!$success) {
         $this->logSection('sympal', 'Could not download plugin via PEAR! Trying alternative sources.');
         $path = sfSympalPluginToolkit::getPluginDownloadPath($this->_pluginName);
         if (is_dir($path)) {
             $this->logSection('sympal', sprintf('...copying plugin from local directory: "%s"', $path));
             $this->_filesystem->mirror($path, sfConfig::get('sf_plugins_dir') . '/' . $this->_pluginName, sfFinder::type('dir'));
             $this->_filesystem->mirror($path, sfConfig::get('sf_plugins_dir') . '/' . $this->_pluginName, sfFinder::type('files'));
         } else {
             $this->logSection('sympal', sprintf('...checking out plugin from SVN repository: "%s"', $path));
             $svn = exec('which svn');
             $this->_filesystem->execute($svn . ' co ' . $path . ' ' . sfConfig::get('sf_plugins_dir') . '/' . $this->_pluginName);
         }
     }
 }
 public function isInstalled()
 {
     return sfSympalPluginToolkit::isPluginInstalled($this->getName());
 }