<?php /** * Statistics gathering for importing procedures. */ class sfIsisImporterStats { /** * @var $instance Singleton instance */ private static $instance = null; /** * Get the singleton instance. */ public static function getInstance() { if(self::$instance == null) { self::$instance = new self; } return self::$instance; } /** * Simple accumulator. * * @param string $section Section name */ public function increase($data) { $stats = Doctrine_Core::getTable('ImportStat')->findByPayload($data); if ($stats) { $stats->count++; } else { $stats = new ImportStat(); $stats->payload = $data; $stats->count = 1; $stats->type = 'param'; $stats->save(); $stats->free(true); } } /** * Compute similars. * * @param string $name Name * @param string $function Function that determines similarity index */ public function similarity($name, $function = 'soundex') { $stats = new ImportStat(); $stats->param = call_user_func($function, $name); $stats->payload = $name; $stats->type = $function; $stats->save(); $stats->free(true); } /** * Compute soundex. * * @param string $name Name */ public function soundex($name) { $this->similarity($name); } /** * Compute metaphone. * * @param string $name Name */ public function metaphone($name) { $this->similarity($name, 'metaphone'); } /** * Compute similar words indexes. * * @param string $name Name */ public function similar($name) { $this->soundex($name); $this->metaphone($name); } }