本文整理汇总了PHP中sfFinder类的典型用法代码示例。如果您正苦于以下问题:PHP sfFinder类的具体用法?PHP sfFinder怎么用?PHP sfFinder使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了sfFinder类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: execute
protected function execute($arguments = array(), $options = array())
{
$databaseManager = new sfDatabaseManager($this->configuration);
$connection = $databaseManager->getDatabase($options['connection'])->getConnection();
$visiteurs_dir = sfConfig::get('sf_root_dir') . '/web/visiteur/';
$interactifs_dir = sfConfig::get('sf_root_dir') . '/web/interactif';
$finder = new sfFinder();
$fileSystem = new sfFilesystem();
foreach ($finder->in($visiteurs_dir) as $file) {
//echo 'search in '. $file;
if (is_file($file) && basename($file) != '.DS_Store') {
$realpath = str_replace($visiteurs_dir, "", $file);
$split = explode('/', $realpath);
if (count($split) > 2) {
//print_r($split);
//exit;
$visiteur_id = $split[0];
$interactif_id = $split[1];
$filename = basename($file);
// check if symlink exist
if (Doctrine::getTable('Interactif')->symlinkDocument($interactif_id, $visiteur_id, $filename, $file)) {
$this->logSection("INFO", "Symlink " . $interactifs_dir . '/' . $interactif_id . '/' . $visiteur_id . '/' . $filename);
}
}
}
}
$this->logSection("INFO", "END Symlink interactif directory");
}
示例2: getUpgrades
/**
* Returns an array of all possible upgrade files as an array with
* the upgrade's key and version
*
* This first looks for all .php files in the versions directory.
* The files should have the format of VERSION_NUMBER (e.g. 1.0.0__1).
* The project is then checked to see if
*/
public function getUpgrades()
{
if (!$this->_upgrades) {
$this->_upgrades = array();
$versions = array();
$dir = dirname(__FILE__) . '/versions';
$files = sfFinder::type('file')->name('*.php')->in($dir);
foreach ($files as $file) {
$info = pathinfo($file);
if (strpos($info['filename'], '__') === false) {
throw new sfException(sprintf('Invalid upgrade filename format for file "%s" - must contain a double underscore - VERSION__NUMBER (e.g. 1.0.0__1) ', $info['filename']));
}
$e = explode('__', $info['filename']);
$version = $e[0];
$number = $e[1];
if ($this->_isVersionNew($info['filename'])) {
$versions[] = array('version' => $version, 'number' => $number);
$this->_upgrades[] = $version . '__' . $number;
}
}
natcasesort($this->_upgrades);
foreach ($this->_upgrades as $key => $version) {
$this->_upgrades[$key] = $versions[$key];
}
}
return $this->_upgrades;
}
示例3: testRemovePatternForMockSources
public function testRemovePatternForMockSources()
{
$route = $this->getRoute('sf_image_mock');
$route->preassemblePattern(array());
$finder = new sfFinder();
$starting_count = count($finder->type('file')->in($this->cache->getOption('cache_dir')));
$this->cache->removePattern($route);
$files = $finder->type('file')->in($this->cache->getOption('cache_dir'));
$this->assertNotContains($this->cache->getOption('cache_dir') . '/thumbnails/default.gif', $files);
$this->assertNotContains($this->cache->getOption('cache_dir') . '/thumbnails/original.jpg', $files);
$this->assertEquals($starting_count - 2, count($files));
}
示例4: generate
/**
* Generates classes and templates in cache.
*
* @param array The parameters
*
* @return string The data to put in configuration cache
*/
public function generate($params = array())
{
$logger = sfContext::getInstance()->getLogger();
$logger->err("WOW generate enter");
$logger->err(print_r($params, true));
$this->params = $params;
// check if all required parameters are present
$required_parameters = array('moduleName');
foreach ($required_parameters as $entry) {
if (!isset($this->params[$entry])) {
throw new sfParseException(sprintf('You must specify a "%s".', $entry));
}
}
// generated module name
$this->setGeneratedModuleName('auto' . ucfirst($this->params['moduleName']));
$this->setModuleName($this->params['moduleName']);
// check if the theme exists?
$theme = isset($this->params['theme']) ? $this->params['theme'] : 'default';
$themeDir = $this->generatorManager->getConfiguration()->getGeneratorTemplate($this->getGeneratorClass(), $theme, '');
if (!is_dir($themeDir)) {
throw new sfConfigurationException(sprintf('The theme "%s" does not exist.', $theme));
}
$this->setTheme($theme);
$files = sfFinder::type('file')->relative()->in($themeDir);
$this->generatePhpFiles($this->generatedModuleName, $files);
// require generated action class
$data = "require_once(sfConfig::get('sf_module_cache_dir').'/" . $this->generatedModuleName . "/actions/actions.class.php');\n";
$logger->err("WOW generate leave");
return $data;
}
示例5: execute
/**
* @see sfTask
*/
protected function execute($arguments = array(), $options = array())
{
// remove lib/symfony and data/symfony directories
if (!is_dir('lib/symfony')) {
throw new sfCommandException('You can unfreeze only if you froze the symfony libraries before.');
}
// change symfony path in ProjectConfiguration.class.php
$config = sfConfig::get('sf_config_dir') . '/ProjectConfiguration.class.php';
$content = file_get_contents($config);
if (preg_match('/^# FROZEN_SF_LIB_DIR\\: (.+?)$/m', $content, $match)) {
$publishAssets = new sfPluginPublishAssetsTask($this->dispatcher, $this->formatter);
$publishAssets->setCommandApplication($this->commandApplication);
$symfonyLibDir = $match[1];
$content = str_replace("# FROZEN_SF_LIB_DIR: {$match[1]}\n\n", '', $content);
// need to escape windows pathes "symfony\1.2" -> "symfony\\1.2"
// because preg_replace would then use \1 as group identifier resulting in "symfony.2"
$content = preg_replace('#^require_once.+?$#m', sprintf("require_once '%s/autoload/sfCoreAutoload.class.php';", str_replace('\\', '\\\\', $symfonyLibDir)), $content, 1);
file_put_contents($config, $content);
// re-publish assets
$publishAssets->run(array(), array('--symfony-lib-dir=' . $symfonyLibDir));
// remove files
$finder = sfFinder::type('any');
$this->getFilesystem()->remove($finder->in(sfConfig::get('sf_lib_dir') . '/symfony'));
$this->getFilesystem()->remove(sfConfig::get('sf_lib_dir') . '/symfony');
$this->getFilesystem()->remove($finder->in(sfConfig::get('sf_data_dir') . '/symfony'));
$this->getFilesystem()->remove(sfConfig::get('sf_data_dir') . '/symfony');
$this->getFilesystem()->remove($finder->in(sfConfig::get('sf_web_dir') . '/sf'));
$this->getFilesystem()->remove(sfConfig::get('sf_web_dir') . '/sf');
}
}
示例6: loadMapBuilderClasses
/**
* Loads map builder classes.
*
* This method is ORM dependant.
*
* @throws sfException
*/
protected function loadMapBuilderClasses()
{
// we must load all map builder classes to be able to deal with foreign keys (cf. editSuccess.php template)
$classes = sfFinder::type('file')->ignore_version_control()->name('*MapBuilder.php')->in(sfLoader::getModelDirs());
foreach ($classes as $class)
{
$class_map_builder = basename($class, '.php');
$maps[$class_map_builder] = new $class_map_builder();
if (!$maps[$class_map_builder]->isBuilt())
{
$maps[$class_map_builder]->doBuild();
}
if ($this->className == str_replace('MapBuilder', '', $class_map_builder))
{
$this->map = $maps[$class_map_builder];
}
}
if (!$this->map)
{
throw new sfException('The model class "'.$this->className.'" does not exist.');
}
$this->tableMap = $this->map->getDatabaseMap()->getTable(constant($this->className.'Peer::TABLE_NAME'));
}
示例7: combineModuleFiles
/**
*
* Combine files defined in module's view.yml files
*/
public function combineModuleFiles()
{
// get the all modules
$modules = sfConfig::get('sf_enabled_modules', array());
$app_modules = sfFinder::type('directory')->maxdepth(0)->in(sfConfig::get('sf_app_module_dir'));
foreach ($app_modules as $module) {
$modules[] = str_replace(sfConfig::get('sf_app_module_dir') . '/', '', $module);
}
foreach ($modules as $module) {
$this->logSection('combine', 'module : ' . $module);
$configPath = sprintf('modules/%s/config/view.yml', $module);
$files = $this->configuration->getConfigPaths($configPath);
$config = swCombineViewConfigHandler::getConfiguration($files);
$this->view_handler->setYamlConfig($config);
foreach ($config as $view => $params) {
$this->logSection('combine', ' > view : ' . $module . '::' . $view);
// Generate css module files
$stylesheets = $this->view_handler->exposeMergeConfigValue('stylesheets', $view);
if (count($stylesheets) > 0) {
$assets = $this->view_handler->exposeAddAssets('stylesheet', $stylesheets, false);
$this->combineAndOptimize('stylesheet', $assets);
}
// Generate js module files
$javascripts = $this->view_handler->exposeMergeConfigValue('javascripts', $view);
if (count($javascripts) > 0) {
$assets = $this->view_handler->exposeAddAssets('javascript', $javascripts, false);
$this->combineAndOptimize('javascript', $assets);
}
}
}
}
示例8: loadAllFilesInDir
public function loadAllFilesInDir($dir)
{
$files = sfFinder::type('file')->name('*.schema.sql')->follow_link()->in($dir);
foreach ($files as $file) {
$this->loadFromFile($file);
}
}
示例9: generate
/**
* Generates classes and templates in cache.
*
* @param array $params The parameters
*
* @return string The data to put in configuration cache
*/
public function generate($params = array())
{
$this->validateParameters($params);
$this->modelClass = $this->params['model_class'];
// generated module name
$this->setModuleName($this->params['moduleName']);
$this->setGeneratedModuleName('auto' . ucfirst($this->params['moduleName']));
// theme exists?
$theme = isset($this->params['theme']) ? $this->params['theme'] : 'default';
$this->setTheme($theme);
$themeDir = $this->generatorManager->getConfiguration()->getGeneratorTemplate($this->getGeneratorClass(), $theme, '');
if (!is_dir($themeDir)) {
throw new sfConfigurationException(sprintf('The theme "%s" does not exist.', $theme));
}
// configure the model
$this->configure();
$this->configuration = $this->loadConfiguration();
// generate files
$this->generatePhpFiles($this->generatedModuleName, sfFinder::type('file')->relative()->in($themeDir));
// move helper file
if (file_exists($file = $this->generatorManager->getBasePath() . '/' . $this->getGeneratedModuleName() . '/lib/helper.php')) {
@rename($file, $this->generatorManager->getBasePath() . '/' . $this->getGeneratedModuleName() . '/lib/Base' . ucfirst($this->moduleName) . 'GeneratorHelper.class.php');
}
return "require_once(sfConfig::get('sf_module_cache_dir').'/" . $this->generatedModuleName . "/actions/actions.class.php');";
}
示例10: execute
/**
* @see sfTask
*/
protected function execute($arguments = array(), $options = array())
{
// check that the symfony librairies are not already freeze for this project
if (is_readable(sfConfig::get('sf_lib_dir') . '/symfony')) {
throw new sfCommandException('You can only freeze when lib/symfony is empty.');
}
if (is_readable(sfConfig::get('sf_data_dir') . '/symfony')) {
throw new sfCommandException('You can only freeze when data/symfony is empty.');
}
if (is_readable(sfConfig::get('sf_web_dir') . '/sf')) {
throw new sfCommandException('You can only freeze when web/sf is empty.');
}
if (is_link(sfConfig::get('sf_web_dir') . '/sf')) {
$this->getFilesystem()->remove(sfConfig::get('sf_web_dir') . '/sf');
}
$symfonyLibDir = sfConfig::get('sf_symfony_lib_dir');
$symfonyDataDir = $arguments['symfony_data_dir'];
if (!is_readable($symfonyDataDir)) {
throw new sfCommandException(sprintf('The symfony data dir does not seem to be located at "%s".', $symfonyDataDir));
}
$this->logSection('freeze', sprintf('freezing lib found in "%s', $symfonyLibDir));
$this->logSection('freeze', sprintf('freezing data found in "%s"', $symfonyDataDir));
$this->getFilesystem()->mkdirs('lib' . DIRECTORY_SEPARATOR . 'symfony');
$this->getFilesystem()->mkdirs('data' . DIRECTORY_SEPARATOR . 'symfony');
$finder = sfFinder::type('any')->exec(array($this, 'excludeTests'));
$this->getFilesystem()->mirror($symfonyLibDir, sfConfig::get('sf_lib_dir') . '/symfony', $finder);
$this->getFilesystem()->mirror($symfonyDataDir, sfConfig::get('sf_data_dir') . '/symfony', $finder);
$this->getFilesystem()->rename(sfConfig::get('sf_data_dir') . '/symfony/web/sf', sfConfig::get('sf_web_dir') . '/sf');
// change symfony path in ProjectConfiguration.class.php
$config = sfConfig::get('sf_config_dir') . '/ProjectConfiguration.class.php';
$content = file_get_contents($config);
$content = str_replace('<?php', "<?php\n\n# FROZEN_SF_LIB_DIR: {$symfonyLibDir}", $content);
$content = preg_replace('#(\'|")' . preg_quote($symfonyLibDir, '#') . '#', "dirname(__FILE__).\$1/../lib/symfony", $content);
file_put_contents($config, $content);
}
示例11: loadTasks
/**
* Loads all available tasks.
*
* Looks for tasks in the symfony core, the current project and all project plugins.
*
* @param sfProjectConfiguration $configuration The project configuration
*/
protected function loadTasks(sfProjectConfiguration $configuration)
{
// Symfony core tasks
$dirs = array(sfConfig::get('sf_symfony_lib_dir') . '/task');
// Plugin tasks
foreach ($configuration->getPluginPaths() as $path) {
if (is_dir($taskPath = $path . '/lib/task')) {
$dirs[] = $taskPath;
}
}
// project tasks
$dirs[] = sfConfig::get('sf_lib_dir') . '/task';
$finder = sfFinder::type('file')->name('*Task.class.php');
foreach ($finder->in($dirs) as $file) {
$this->taskFiles[basename($file, '.class.php')] = $file;
}
// register local autoloader for tasks
spl_autoload_register(array($this, 'autoloadTask'));
// require tasks
foreach ($this->taskFiles as $task => $file) {
// forces autoloading of each task class
class_exists($task, true);
}
// unregister local autoloader
spl_autoload_unregister(array($this, 'autoloadTask'));
}
示例12: executeAddon
/**
* @see sfTaskExtraAddon
*/
public function executeAddon($arguments = array(), $options = array())
{
$finder = sfFinder::type('file')->maxdepth(0);
foreach ($finder->in($this->pluginConfiguration->getConnectedPluginSubPaths('/lib/model')) as $file) {
if (!file_exists($pluginFile = dirname($file) . '/plugin/Plugin' . basename($file)) && preg_match('/(\\w+) extends (\\w+)/', $contents = file_get_contents($file), $match) && 0 !== strpos($match[2], 'Plugin')) {
$pluginContents = <<<EOF
<?php
/**
* Plugin model class generated by sfTaskExtraPlugin.
*/
class Plugin{$match[1]} extends {$match['2']}
{
}
EOF;
// create plugin class
$this->getFilesystem()->mkdirs(dirname($pluginFile));
$this->getFilesystem()->touch($pluginFile);
file_put_contents($pluginFile, $pluginContents);
// edit stub class
$this->logSection('edit', $file);
file_put_contents($file, str_replace('extends ' . $match[2], 'extends Plugin' . $match[1], $contents));
}
}
}
示例13: executeIndex
/**
* Executes index action
*
* @param sfWebRequest $request A request object
*/
public function executeIndex(sfWebRequest $request)
{
$this->task = $request->getParameter('task', null);
if (!is_null($this->task))
{
$this->form = new opKdtPluginBackendForm(array('task' => $this->task));
if ($request->isMethod(sfRequest::POST))
{
$this->form->bind($request->getParameter($this->form->getName()));
if ($this->form->isValid())
{
$this->form->executeTask();
$this->getUser()->setFlash('notice', 'Execute the tasks.');
$this->redirect('opKdtPlugin/index');
}
}
return sfView::INPUT;
}
$finder = sfFinder::type('file')->maxdepth(0)->ignore_version_control(false)->follow_link()->name('opKdt*Task.class.php');
$dir = array(sfConfig::get('sf_root_dir').DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'opKdtPlugin'.DIRECTORY_SEPARATOR.'lib'.DIRECTORY_SEPARATOR.'task');
$this->tasks = array();
foreach ($finder->in($dir) as $path)
{
preg_match('/^opKdt(.*)Task.class.php$/', basename($path), $matches);
$this->tasks[] = $matches[1];
}
}
示例14: upgrade
public function upgrade()
{
if (!file_exists($file = sfConfig::get('sf_lib_dir') . '/form/BaseForm.class.php')) {
$properties = parse_ini_file(sfConfig::get('sf_config_dir') . '/properties.ini', true);
$tokens = array('PROJECT_NAME' => isset($properties['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', 'AUTHOR_NAME' => isset($properties['symfony']['author']) ? $properties['symfony']['author'] : 'Your name here');
$this->getFilesystem()->copy(sfConfig::get('sf_symfony_lib_dir') . '/task/generator/skeleton/project/lib/form/BaseForm.class.php', $file);
$this->getFilesystem()->replaceTokens(array($file), '##', '##', $tokens);
}
$finder = sfFinder::type('file')->name('*.php');
foreach ($finder->in($this->getProjectLibDirectories('/form')) as $file) {
$contents = file_get_contents($file);
$changed = false;
// forms that extend sfForm should now extend BaseForm
$contents = preg_replace('/(\\bextends\\s+)sfForm\\b/i', '\\1BaseForm', $contents, -1, $count);
$changed = $count || $changed;
// change instances of sfWidgetFormInput to sfWidgetFormInputText
$contents = preg_replace('/\\bnew\\s+sfWidgetFormInput\\b/i', '\\0Text', $contents, -1, $count);
$changed = $count || $changed;
// change signature of sfFormDoctrine::processValues()
$contents = preg_replace('/public\\s+function\\s+processValues\\s*\\(\\s*\\$\\w+(\\s*=\\s*null\\s*)\\)/ie', "str_replace('\$1', '', '\$0')", $contents, -1, $count);
$changed = $count || $changed;
if ($changed) {
$this->logSection('form', 'Migrating ' . $file);
file_put_contents($file, $contents);
}
}
}
示例15: execute
protected function execute($arguments = array(), $options = array())
{
$plugin = $arguments['plugin'];
$app = $arguments['application'];
$module = $arguments['module'];
$pluginsDir = sfConfig::get('sf_plugins_dir') . '/' . $plugin;
// Validate the module name
if (!preg_match('/^[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*$/', $module)) {
throw new sfCommandException(sprintf('The module name "%s" is invalid.', $module));
}
$moduleDir = $pluginsDir . '/apps/' . $app . '/modules/' . $module;
if (is_dir($moduleDir)) {
throw new sfCommandException(sprintf('The module "%s" already exists in the "%s" application.in the "%s" plugin', $moduleDir, $app, $plugin));
}
$properties = parse_ini_file(sfConfig::get('sf_config_dir') . '/properties.ini', true);
if (is_readable($pluginsDir . '/config/properties.ini')) {
$pluginProperties = parse_ini_file($pluginsDir . '/config/properties.ini', true);
$properties = array_merge($properties, $pluginProperties);
}
$constants = array('PROJECT_NAME' => isset($properties['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', 'APP_NAME' => $app, 'MODULE_NAME' => $module, 'AUTHOR_NAME' => isset($properties['symfony']['author']) ? $properties['symfony']['author'] : 'Your name here');
$skeletonDir = dirname(__FILE__) . '/skeleton/module';
// create basic application structure
$finder = sfFinder::type('any')->discard('.sf');
$this->getFilesystem()->mirror($skeletonDir . '/module', $moduleDir, $finder);
// customize php and yml files
$finder = sfFinder::type('file')->name('*.php', '*.yml');
$this->getFilesystem()->replaceTokens($finder->in($moduleDir), '##', '##', $constants);
}