Пример #1
0
 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.");
 }