The blog of COil: PHP, PEAR, symfony1, Symfony2 & iWeb2.0+

Strangebuzz...?

» Collapse all «

Tag - symfony1

     

Wednesday 5 October 2011

symfony1 sfTCPDFPlugin 1-6-3 released

Last week I also released the 1.6.3 version of the sfTCPDFPlugin. It is just of small update to check that it works without problem with the last TCPDF library which is actually at version 5_9_120 (2011-09-22). (Note that the release strategy of this library is very fast with a lot of minor versions). You can check the CHANGELOG here.

sfTCPDFPlugin


PS: There is now more than 100 registered users for this plugin ! :)

See you. COil :)

Thursday 29 September 2011

symfony1 sfTaskLoggerPlugin 1-0-3 released

Last week I released the 1.0.3 version of the sfTaskLoggerPlugin. It corrects several bugs and adds several features. The main improvement of this version is that it is bundled with a fully customized Doctrine admin generator module in order to manage and check the tasks launched by the plugin. You can check the changelog here. I hope that with this version the plugin will overtake the huge number of registered users of 8 ! :D

sfTaskLoggerPlugin


PS : Note that there is a bug in the partial that shows the task total length, use the svn trunk (which is actually stable et revision 33110) if you want to correct it.

See you. COil :)

Tuesday 18 March 2008

Symfony 1.0 tip : Registration of plugin routes

[En] Here is a little tip Fabien gave me. I am actually developing a plugin witch has quiet a lot of routes (about 40). Normally you can add the routes with the prependRoute function, like does the sfGuardplugin.

[php]
<?php
if (sfConfig::get('app_sf_guard_plugin_routes_register', true) && in_array('sfGuardAuth', sfConfig::get('sf_enabled_modules', array())))
{
  $r = sfRouting::getInstance();
 	
  // preprend our routes
  $r->prependRoute('sf_guard_signin', '/login', array('module' => 'sfGuardAuth', 'action' => 'signin'));
  $r->prependRoute('sf_guard_signout', '/logout', array('module' => 'sfGuardAuth', 'action' => 'signout'));
  $r->prependRoute('sf_guard_password', '/request_password', array('module' => 'sfGuardAuth', 'action' => 'password'));
}
?>


But for each prependRoute call an array_merge is done on all existing routes.

[php]
<?php
  /**
   * Adds a new route at the beginning of the current list of routes.
   *
   * @see connect
   */
  public function prependRoute($name, $route, $default = array(), $requirements = array())
  {
    $routes = $this->routes;
    $this->routes = array();
    $newroutes = $this->connect($name, $route, $default, $requirements);
    $this->routes = array_merge($newroutes, $routes);

    return $this->routes;
  }
?>


So the tip here is to save all routes, clear them, add the routes of the plugin and then append the saved routes. Witch can be done like this:

[php]
<?php
  // Save and clear all routes
  $r = sfRouting::getInstance();
  $routes = $r->getRoutes();
  $r->clearRoutes();
  
  // Plugin home
  $r->connect('plugin_home', '/my_super_plugin/homepage', array(
    'module' => 'my_plugin_module', 
    'action' => 'my_plugin_action',
    'additional_parameter'   => 1
    ));

  // Another route
  $r->connect('plugin_home', '/my_super_plugin/section1', array(
    'module' => 'my_plugin_module', 
    'action' => 'my_plugin_action_section1',
    'additional_parameter'   => 2
    ));

  // ... other routes

  // Then merge new routes with the saved one
  $r->setRoutes($r->getRoutes() + $routes);
?>


That's it. :) Of course it is always better to have all routes of the application in the routing.yml but in my case it was not possible.

Thursday 12 April 2007

View template source with Symfony

[En] A little snippet to display the source code of the current main template displayed in a hidden div, the template (here it is a test of the sfGeshi plugin) (1)
[Edit 20/05/07] You can find a demo here (on the demo of the sfJoomlaBridge)

[Fr] Un petit snippet qui permet d'afficher le code source du template courant utilisé dans un div caché. Le template (ici je faisais un test du plugin sfGeshi)
[Edit 20/05/07] Vous pouvez trouver une demo ici (sur la démo de mon plugin sfJoomlaBridge)

[php]
<h1>sfGeshiPlugin</h1>

<div id="demo">
    <?php $highlighter = new sfGeshi(file_get_contents(myTools::getTemplatePath()), 'php'); ?>
    <?php echo $highlighter->parse_code(); ?>
</div>

<?php include_partial('global/view_source_link'); ?>



[En] The view source link template (_view_source_link.php)
[Fr] Ici le code du template permettant d'afficher le lien pour visualiser le code source

[php]
<div id="source-content">
    <hr/>
    <?php $highlighter = new sfGeshi(file_get_contents(myTools::getTemplatePath()), 'php'); ?>
    <p>
    <?php echo link_to_function(
      '&raquo; Show source code of this template',
      visual_effect('SlideDown', 'source')
    ); ?>
    </p>
     
    <div id="source" style="display:none">
        <?php echo $highlighter->parse_code(); ?>
        <p>
        <?php echo link_to_function(
          '&raquo; Close source code',
          visual_effect('SlideUp', 'source')
        ); ?>
        </p>
    </div>
</div>



[En] And the function to get the physical path of the template :
[Fr] Et la fonction permettant de récupérer le chemin physique du template principal en cours :

[php]
<?php
    public static function getTemplatePath()
    {
        $context = sfContext::getInstance();
        $module   = $context->getModuleDirectory();
        $template = $context->getCurrentViewInstance()->getTemplate();
        return $module. DIRECTORY_SEPARATOR. 'templates'. DIRECTORY_SEPARATOR. $template;
    }
?>



View template source with Symfony example