I have found a solution, looking at data/bin/symfony.php
This is the new sf_control_panel.php :
<?php
/*
* This file is part of the symfony package.
* (c) 2004-2006 Fabien Potencier
<[EMAIL PROTECTED]>
*
* For the full copyright and license information, please view the
LICENSE
* file that was distributed with this source code.
*/
// restrict to localhost only
if ('127.0.0.1' != $_SERVER['REMOTE_ADDR'])
{
return;
}
define('SF_ROOT_DIR', realpath(dirname(__FILE__).'/..'));
// symfony directories
include(SF_ROOT_DIR.'/config/config.php');
// as we are in the web/ dir, we need to go up one level to get to the
project root
chdir(dirname(__FILE__).DIRECTORY_SEPARATOR.'..');
// init pake
require_once($sf_symfony_lib_dir.'/vendor/pake/pakeFunction.php');
$pake = pakeApp::get_instance();
/* MODIFICATIONS START HERE */
// autoloading for pake tasks
class simpleAutoloader
{
static public $class_paths = array();
static public function initialize($sf_symfony_lib_dir)
{
self::$class_paths = array();
self::register($sf_symfony_lib_dir, '.class.php');
self::register($sf_symfony_lib_dir.'/vendor/propel', '.php');
self::register($sf_symfony_lib_dir.'/vendor/creole', '.php');
self::register('lib/model', '.php');
self::register('plugins', '.php');
}
static public function __autoload($class)
{
if (!isset(self::$class_paths[$class]))
{
return false;
}
require(self::$class_paths[$class]);
return true;
}
protected function register($dir, $ext)
{
if (!is_dir($dir))
{
return;
}
foreach
(pakeFinder::type('file')->name('*'.$ext)->ignore_version_control()->follow_link()->in($dir)
as $file)
{
self::$class_paths[str_replace($ext, '', basename($file))] =
$file;
}
}
}
simpleAutoloader::initialize($sf_symfony_lib_dir);
function __autoload($class)
{
return simpleAutoloader::__autoload($class);
}
require_once($sf_symfony_lib_dir.'/config/sfConfig.class.php');
sfConfig::add(array(
'sf_root_dir' => getcwd(),
'sf_symfony_lib_dir' => $sf_symfony_lib_dir,
'sf_symfony_data_dir' => $sf_symfony_data_dir,
));
// directory layout
include($sf_symfony_data_dir.'/config/constants.php');
// include path
set_include_path(
sfConfig::get('sf_lib_dir').PATH_SEPARATOR.
sfConfig::get('sf_app_lib_dir').PATH_SEPARATOR.
sfConfig::get('sf_model_dir').PATH_SEPARATOR.
sfConfig::get('sf_symfony_lib_dir').DIRECTORY_SEPARATOR.'vendor'.PATH_SEPARATOR.
get_include_path()
);
// register tasks
$dirs = array(
sfConfig::get('sf_data_dir').DIRECTORY_SEPARATOR.'tasks' =>
'myPake*.php', // project tasks
sfConfig::get('sf_symfony_data_dir').DIRECTORY_SEPARATOR.'tasks' =>
'sfPake*.php', // symfony tasks
sfConfig::get('sf_root_dir').'/plugins/*/data/tasks' =>
'*.php', // plugin tasks
);
foreach ($dirs as $globDir => $name)
{
$tasks = pakeFinder::type('file')->name($name)->in(glob($globDir));
foreach ($tasks as $task)
{
include_once($task);
}
}
/* MODIFICATIONS STOP HERE */
/* ONLY ONE MODIFICATION FOLLOW */
// get parameters from request
$task = isset($_GET['task']) ? $_GET['task'] : '';
$args = isset($_GET['arg']) ? $_GET['arg'] : array();
// task
$tasks = array(
'clear-cache',
'propel-build-model',
'propel-build-sql',
'propel-insert-sql',
'propel-build-all',
'propel-load-data',
'init-module',
'propel-init-crud',
'propel-generate-crud',
'propel-init-admin',
'test',
);
if (in_array($task, $tasks))
{
try
{
echo "<div id='feedback'><pre>";
/* LAST MODIFICATION START */
echo $pake->run(null, array_merge(array($task), $args),false);
/* LAST MODIFICATION STOP */
echo "</pre></div>";
echo "<strong>symfony ".$task." ".implode(' ', $args)." : task
executed</strong>";
echo " <a href='javascript:;'
onclick='switchElement(\"feedback\");return false'>[close]</a>";
}
catch (pakeException $e)
{
print "<strong>ERROR</strong>: ".$e->getMessage();
}
}
// source code
if ($task == 'show')
{
$file = realpath(SF_ROOT_DIR.'/'.rawurldecode($_GET['filename']));
if (0 === strpos($file, SF_ROOT_DIR) && file_exists($file))
{
echo '<a
href="'.$_SERVER["SCRIPT_NAME"].'">back</a><p><strong>'.$file.'</strong></p>';
if ('.php' == substr($file, -4))
{
highlight_file($file);
}
else
{
echo '<pre>'.htmlentities(file_get_contents($file), ENT_QUOTES,
'UTF-8').'</pre>';
}
return;
}
else
{
die(javascript_alert('File does not exist!'));
}
}
// batch process
if ($task == 'batch')
{
$file =
realpath(SF_ROOT_DIR.'/batch/'.rawurldecode($_GET['filename']));
if (0 === strpos($file, SF_ROOT_DIR) && file_exists($file))
{
echo "<div id='feedback'><pre>";
exec('php '.escapeshellcmd($file), $output, $retval);
echo implode('<br />', $output);
echo "</pre></div>";
echo "<strong>batch process
".htmlentities(rawurldecode($_GET['filename']))." executed</strong>";
echo " <a href='javascript:;'
onclick='switchElement(\"feedback\");return false'>[close]</a>";
}
else
{
die(javascript_alert('File does not exist!'));
}
}
// helper functions
function javascript_alert($text)
{
return "<html><body onload=\"javascript:
alert('$text');history.back();\" bgcolor=\"#F0F0F0\"></body></html>";
}
function lcfirst($name)
{
$first_letter = strtolower(substr($name, 0, 1));
return $first_letter.substr($name, 1, strlen($name)-1);
}
function link_to_file($filename, $path, $name = null, $br = true)
{
return "<a
href='".$_SERVER["SCRIPT_NAME"]."?task=show&filename=".rawurlencode(str_replace('\\',
'/', str_replace(SF_ROOT_DIR.DIRECTORY_SEPARATOR, '',
realpath(SF_ROOT_DIR.'/'.$path.'/'.$filename))))."'>".($name === null ?
$filename : $name)."</a>".($br ? "<br />":"");
}
// initialize variables needed at several places
$tmp1 = str_replace('\\', '/', SF_ROOT_DIR);
$tmp2 = explode('/', $tmp1);
$project_name = end($tmp2);
$model_files =
pakeFinder::type('file')->maxdepth(0)->relative()->name("*Peer.php")->ignore_version_control()->in('lib/model');
$apps =
pakeFinder::type('dir')->maxdepth(0)->relative()->ignore_version_control()->in('apps');
$batches =
pakeFinder::type('file')->relative()->ignore_version_control()->maxdepth(3)->name("*.php")->in('batch');
$controllers =
pakeFinder::type('file')->relative()->ignore_version_control()->maxdepth(1)->name('*.php')->in('web');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://web.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>"<?php echo $project_name ?>" project - symfony control
panel</title>
<style type="text/css">
body, td
{
font-family: verdana, sans-serif;
}
body
{
font-size: 0.8em;
}
h1
{
font-size: 1.5em;
text-align: center;
margin-bottom: 0;
background-color: #c6cdde;
padding: 10px;
}
h2
{
font-size: 1.4em;
background-color: #97CCE8;
padding: 2px;
padding-left: 10px;
border: solid 1px #087CB9;
}
h3
{
font-size: 1.2em;
background-color: #EDD7F6;
padding: 2px;
padding-left: 10px;
border: solid 1px #A30045;
}
h4
{
margin: 0;
}
blockquote
{
margin: 5px 10px;
}
a.task
{
font-weight: bold;
}
#propel-task label
{
display: block;
width: 29%;
float: left;
}
#propel-task input, #propel-task select
{
vertical-align: middle;
width: 60%;
}
#propel-task br
{
clear: left;
}
.column
{
float: left;
width: <?php echo intval(100 / (count($apps) + 2)) - 2 ?>%;
padding: 1%;
padding-bottom: 32767px !important;
margin-bottom: -32767px !important;
}
#wrapper
{
overflow: hidden;
}
#wrapper
{
float: left;
float/**/: none;
}
#wrapper:after
{
content: '[DO NOT LEAVE IT IS NOT REAL]';
display: block;
height: 0;
clear: both;
visibility: hidden;
}
#wrapper
{
display: inline-block;
}
/*\*/
#wrapper
{
display: block;
}
/* end easy clearing */
#footer
{
clear: both;
}
* > #footer, * > form, * > #notes, * > .output
{
position: relative;
z-index: 1000;
}
</style>
<script type="text/javascript">
function $()
{
var results = [], element;
for (var i = 0; i < arguments.length; i++) {
element = arguments[i];
element = document.getElementById(element);
results.push(element);
}
return results.length < 2 ? results[0] : results;
}
function switchElement(element)
{
element = $(element);
element.style.display = (element.style.display == "none") ?
"block" : "none";
}
</script>
</head>
<body>
<h1>"<?php echo $project_name ?>" project - symfony control
panel</h1>
<div id="wrapper">
<?php foreach ($apps as $app) : ?>
<div class="column">
<h2>Application "<?php echo $app ?>"</h2>
<blockquote>
<a class="task" href="<?php echo $_SERVER["SCRIPT_NAME"]
?>?task=clear-cache&arg[0]=<?php echo $app ?>">Clear app
cache</a><br />
<a class="task" href="<?php echo $_SERVER["SCRIPT_NAME"]
?>?task=clear-cache&arg[0]=<?php echo $app
?>&arg[1]=config">Clear config app cache</a><br />
<a class="task" href="<?php echo $_SERVER["SCRIPT_NAME"]
?>?task=clear-cache&arg[0]=<?php echo $app
?>&arg[1]=templates">Clear templates app cache</a><br />
<a class="task" href="<?php echo $_SERVER["SCRIPT_NAME"]
?>?task=test&arg[0]=<?php echo $app ?>">Launch test suite</a><br />
</blockquote>
<h3>Environments</h3>
<blockquote>
<?php foreach ($controllers as $controller): ?>
<?php $contents =
file_get_contents(getcwd().'/web/'.$controller);
preg_match('/\'SF_APP\',[\s]*\''.$app.'\'\)/', $contents,
$found_app);
preg_match_all('/\'SF_ENVIRONMENT\',[\s]*\'(.*)\'\)/',
$contents, $envs) ?>
<?php if (isset($found_app[0]) && isset($envs[1][0])): ?>
<a href="<?php echo $controller ?>">Browse in <?php echo
$envs[1][0] ?></a><br />
<?php endif; ?>
<?php endforeach; ?>
</blockquote>
<h3>Modules</h3>
<?php $modules =
pakeFinder::type('dir')->maxdepth(0)->relative()->ignore_version_control()->in('apps/'.$app.'/modules')
?>
<blockquote>
<?php foreach ($modules as $module): ?>
<a href="javascript:;" onclick="switchElement('<?php echo
$app ?>_module_<?php echo $module ?>');return false"><?php echo $module
?></a><br />
<blockquote id="<?php echo $app ?>_module_<?php echo $module
?>" style="display:none;">
<?php try { ?>
<?php $action_files =
pakeFinder::type('file')->name('*action*.class.php')->maxdepth(0)->ignore_version_control()->relative()->in('apps/'.$app.'/modules/'.$module.'/actions')
?>
<?php if ($action_files): ?>
<h4>Actions</h4>
<blockquote>
<?php foreach ($action_files as $action_file): ?>
<?php preg_match_all('/function\s+execute(.*)\(\)/',
file_get_contents(SF_ROOT_DIR.'/apps/'.$app.'/modules/'.$module.'/actions/'.$action_file),
$actions) ?>
<?php foreach ($actions[1] as $action): ?>
<?php echo link_to_file($action_file,
'/apps/'.$app.'/modules/'.$module.'/actions/', lcfirst($action)) ?>
<?php endforeach; ?>
<?php endforeach; ?>
</blockquote>
<?php endif; ?>
<?php } catch (Exception $e) { } ?>
<?php try { ?>
<?php $templates =
pakeFinder::type('file')->name('*.php')->maxdepth(0)->relative()->ignore_version_control()->in('apps/'.$app.'/modules/'.$module.'/templates')
?>
<?php if ($templates): ?>
<h4>Templates</h4>
<blockquote>
<?php foreach ($templates as $template): ?>
<?php echo link_to_file($template,
'/apps/'.$app.'/modules/'.$module.'/templates') ?>
<?php endforeach; ?>
</blockquote>
<?php endif; ?>
<?php } catch (Exception $e) { } ?>
<?php try { ?>
<?php $configurations =
pakeFinder::type('file')->name('*.yml')->maxdepth(0)->relative()->ignore_version_control()->in('apps/'.$app.'/modules/'.$module.'/config')
?>
<?php if ($configurations): ?>
<h4>Configuration</h4>
<blockquote>
<?php foreach ($configurations as $configuration): ?>
<?php echo link_to_file($configuration,
'/apps/'.$app.'/modules/'.$module.'/config') ?>
<?php endforeach; ?>
</blockquote>
<?php endif; ?>
<?php } catch (Exception $e) { } ?>
<?php try { ?>
<?php $libraries =
pakeFinder::type('file')->name('*.php')->relative()->ignore_version_control()->in('apps/'.$app.'/modules/'.$module.'/lib')
?>
<?php if ($libraries): ?>
<h4>Libraries</h4>
<blockquote>
<?php foreach ($libraries as $library): ?>
<?php echo link_to_file($library,
'/apps/'.$app.'/modules/'.$module.'/lib') ?>
<?php endforeach; ?>
</blockquote>
<?php endif; ?>
<?php } catch (Exception $e) { } ?>
</blockquote>
<?php endforeach; ?>
</blockquote>
<blockquote>
<a class="task" href="#"
onclick="switchElement('propel-task');return false">Create new
module...</a><br />
<form method="get" action="<?php echo $_SERVER["SCRIPT_NAME"]
?>" name="propel-task" id="propel-task" style="display:
none;margin-top:10px">
<input type="hidden" name="arg[0]" value="<?php echo $app ?>"
/>
<label for="task">type</label>
<select name="task" onChange=";if
(String(this.value).indexOf('propel') == 0) divdisplay ='block'; else
divdisplay ='none'; $('propel_module_models').style.display =
divdisplay;">
<option value="init-module">empty skeleton</option>
<?php if ($model_files): ?>
<option value="propel-init-crud">scaffolding
(init)</option>
<option value="propel-generate-crud">scaffolding
(generate)</option>
<option
value="propel-init-admin">administration</option>
<?php endif; ?>
</select><br />
<label for="arg[1]">name</label>
<input type="text" name="arg[1]" /><br />
<?php if ($model_files): ?>
<div id="propel_module_models" style="display:none">
<label for="arg[2]">based on</label>
<select name="arg[2]" id="propel_module_models_select">
<option value="" selected="selected">select a
class</option>
<?php foreach ($model_files as $model_file): ?>
<?php $model = substr($model_file, 0,
strlen($model_file)-8) ?>
<option value="<?php echo $model ?>"><?php echo
$model ?></option>
<?php endforeach; ?>
</select><br />
</div>
<?php endif; ?>
<label> </label>
<input type="submit" value="Create a module" /><br />
</form>
</blockquote>
<?php try { ?>
<h3>Configuration</h3>
<?php $config_files =
pakeFinder::type('file')->relative()->ignore_version_control()->in('apps/'.$app.'/config')
?>
<blockquote>
<?php foreach ($config_files as $config_file): ?>
<?php echo link_to_file($config_file,
'/apps/'.$app.'/config') ?>
<?php endforeach; ?>
</blockquote>
<?php } catch (Exception $e) { } ?>
<?php try { ?>
<?php $libraries =
pakeFinder::type('file')->name('*.php')->relative()->ignore_version_control()->in('apps/'.$app.'/lib')
?>
<?php if ($libraries): ?>
<h3>Libraries</h3>
<blockquote>
<?php foreach ($libraries as $library): ?>
<?php echo link_to_file($library, '/apps/'.$app.'/lib') ?>
<?php endforeach; ?>
</blockquote>
<?php endif; ?>
<?php } catch (Exception $e) { } ?>
</div>
<?php endforeach; ?>
<div class="column">
<h2>Model</h2>
<?php try { ?>
<?php $schema_files =
pakeFinder::type('file')->maxdepth(3)->relative()->name("*schema.*ml")->prune('web')->prune('lib')->prune('data')->ignore_version_control()->in('./')
?>
<?php if ($schema_files): ?>
<h3>Schema</h3>
<blockquote>
<?php foreach ($schema_files as $schema_file): ?>
<?php echo link_to_file($schema_file, '') ?>
<?php endforeach; ?>
</blockquote>
<blockquote style="float:left">
<a class="task" href="<?php echo $_SERVER["SCRIPT_NAME"]
?>?task=propel-build-model">Rebuild Model</a><br />
<a class="task" href="<?php echo $_SERVER["SCRIPT_NAME"]
?>?task=propel-build-sql">Build SQL</a><br />
<a class="task" href="<?php echo $_SERVER["SCRIPT_NAME"]
?>?task=propel-insert-sql">Insert SQL</a>
</blockquote>
<blockquote style="float:left">
<br />
<a class="task" href="<?php echo $_SERVER["SCRIPT_NAME"]
?>?task=propel-build-all">Rebuild Model and db</a>
</blockquote>
<br style="clear:left" />
<?php endif; ?>
<?php } catch (Exception $e) { } ?>
<?php try { ?>
<?php $connection_files =
pakeFinder::type('file')->maxdepth(3)->relative()->name('databases.yml')->prune('lib')->prune('lib')->prune('data')->ignore_version_control()->in('./')
?>
<?php if ($connection_files): ?>
<h3>Connection settings</h3>
<blockquote>
<?php foreach ($connection_files as $connection_file): ?>
<?php echo link_to_file($connection_file, '') ?>
<?php endforeach; ?>
</blockquote>
<?php endif; ?>
<?php } catch (Exception $e) { } ?>
<?php try { ?>
<?php $fixtures_files =
pakeFinder::type('file')->maxdepth(3)->relative()->name("*.yml")->ignore_version_control()->in('./data/fixtures')
?>
<?php if ($fixtures_files ): ?>
<h3>Test data</h3>
<blockquote>
<?php foreach ($fixtures_files as $fixtures_file): ?>
<?php echo link_to_file($fixtures_file, '/data/fixtures') ?>
<?php endforeach; ?>
</blockquote>
<blockquote>
<a class="task" href="<?php echo $_SERVER["SCRIPT_NAME"]
?>?task=propel-load-data">Insert into db</a>
</blockquote>
<?php if ($model_files): ?>
<h3>Classes</h3>
<blockquote>
<?php foreach ($model_files as $model): ?>
<?php $model = substr($model, 0, strlen($model)-8) ?>
<?php echo link_to_file($model.'.php', '/lib/model', null,
false) ?> (<?php echo link_to_file('Base'.$model.'.php',
'/lib/model/om', 'base', false) ?>)<br />
<?php echo link_to_file($model.'Peer.php', '/lib/model', null,
false) ?> (<?php echo link_to_file('Base'.$model.'Peer.php',
'/lib/model/om', 'base', false) ?>)<br />
<?php endforeach; ?>
</blockquote>
<?php endif; ?>
<?php endif; ?>
<?php } catch (Exception $e) { } ?>
</div>
<div class="column">
<h2>Cache</h2>
<blockquote><b><a href="<?php echo $_SERVER["SCRIPT_NAME"]
?>?task=clear-cache">Clear All</a></b></blockquote>
<?php try { ?>
<?php if ($batches): ?>
<h2>Batch</h2>
<blockquote>
<?php foreach ($batches as $batch): ?>
<b><a href="<?php echo $_SERVER["SCRIPT_NAME"]
?>?task=batch&filename=<?php echo rawurlencode($batch) ?>"><?php echo
$batch ?></a></b><br/>
<?php endforeach; ?>
</blockquote>
<?php endif; ?>
<?php } catch (Exception $e) { } ?>
<?php $libraries =
pakeFinder::type('file')->name('*.php')->prune('symfony')->prune('phing')->prune('pake')->prune('model')->relative()->ignore_version_control()->in('lib')
?>
<?php if ($libraries): ?>
<h2>Libraries</h2>
<blockquote>
<?php foreach ($libraries as $library): ?>
<?php echo link_to_file($library, '/lib') ?>
<?php endforeach; ?>
</blockquote>
<?php endif; ?>
<h2>symfony directories</h2>
<blockquote>
<?php echo $sf_symfony_lib_dir ?>
<?php echo $sf_symfony_data_dir ?>
</blockquote>
<!-- <h2>Install Plug-ins</h2> -->
</div>
</div>
</body>
</html>
On 11 nov, 18:24, "x0rster" <[EMAIL PROTECTED]> wrote:
> Hi all,
>
> I'm trying to get sf_control_panel.php working with sf_sandbox-alpha :
> I'm getting : ERROR: No pakefile found (looking for:
> /home.1/f/a/x/xxxxx/config/../data/symfony/bin/pakefile.php)
>
> This is important for me because without the control panel I don't know
> how I can execute a symfony because I'm on a shared web hosting (OVH -
> French hosting)
>
> At first I've removed the restrict to localhost (I will later add
> something to prevent anybody to be able to use the control panel)
> and I've replaced any "web" by "www" in the file because my web_dir is
> "www".
>
> Does anyone know how to get the control panel working or can help me to
> correct this problem ?
> Or does anyone know another way to do symfony tasks ? (I didn't have
> telnet or ssh access to the server, I've tried using shell_exec in php
> but I can't execute php cli files because php is compiled without cli
> support)
>
> Thanks for your help
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"symfony developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/symfony-devs?hl=en
-~----------~----~----~----~------~----~------~--~---