protected function handleAdd(array $values) { $tableName = $values['table_name']; $colName = $values['column_name']; $tableMap = PropelQuery::from($tableName)->getTableMap(); $colMap = $tableMap->getColumn($colName); $fidColMap = $tableMap->getColumn("{$colName}_fid"); $rows = PropelQuery::from($tableName)->where("{$tableMap->getPhpName()}.{$colMap->getPhpName()} IS NOT NULL")->_or()->filterBy($colMap->getPhpName(), '', Criteria::NOT_EQUAL)->find(); $nbCreated = 0; foreach ($rows as $row) { $filePath = $row->{'get' . $colMap->getPhpName()}(); $managedfile = ManagedfileQuery::create()->filterByFilepath($filePath)->findOneOrCreate(); if ($managedfile->isNew()) { $fullpath = Curry_Core::$config->curry->wwwPath . DIRECTORY_SEPARATOR . $filePath; $deleted = !file_exists($fullpath); $managedfile->setFilemime(Managedfile::getMimeType($filePath))->setDeleted($deleted)->save(); ++$nbCreated; } // update fid column $currentFid = $row->{'get' . $fidColMap->getPhpName()}(); $realFid = $managedfile->getFid(); if ($currentFid != $realFid) { $row->{'set' . $fidColMap->getPhpName()}($realFid)->save(); } } $this->addMessage("Created {$nbCreated} new records in the Managedfile table."); }