Skip to content

Instantly share code, notes, and snippets.

@hissy
Last active May 16, 2017 20:45
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save hissy/087bbe6ae37b4f07d8ba284cd7c86b72 to your computer and use it in GitHub Desktop.
Save hissy/087bbe6ae37b4f07d8ba284cd7c86b72 to your computer and use it in GitHub Desktop.
[concrete5][V8] Search all files from legacy database, then import files to modern concrete5
<?php
namespace Application\Job;
use Concrete\Core\File\Importer;
use Concrete\Core\Job\QueueableJob;
use ZendQueue\Message as ZendQueueMessage;
use ZendQueue\Queue as ZendQueue;
class ImportFiles extends QueueableJob
{
protected static $basePath = '/var/www/vhost/www.example.com/files';
public $jNotUninstallable=0;
public $jSupportsQueue = true;
public function getJobName() {
return t("Import Files");
}
public function getJobDescription() {
return t("Import all files from legacy site.");
}
public function start(ZendQueue $q)
{
/** @var \Doctrine\DBAL\Query\QueryBuilder $qb */
$qb = \Database::connection('legacy')->createQueryBuilder();
$query = $qb->select('f.fID')
->from('Files', 'f')
->innerJoin('f', 'FileVersions', 'fv', 'f.fID = fv.fID')
->where('fv.fvIsApproved = 1')
// ->setMaxResults(5)
;
$resp = $query->execute();
$results = $resp->fetchAll();
foreach ($results as $result) {
$q->send($result['fID']);
}
}
public function finish(ZendQueue $q)
{
return t('Done.');
}
public function processQueueItem(ZendQueueMessage $msg)
{
/** @var \Doctrine\DBAL\Query\QueryBuilder $qb */
$qb = \Database::connection('legacy')->createQueryBuilder();
$query = $qb->select('f.fID', 'fv.fvID', 'fv.fvFilename', 'fv.fvPrefix')
->from('Files', 'f')
->innerJoin('f', 'FileVersions', 'fv', 'f.fID = fv.fID')
->where('f.fID = :fID')
->setParameter('fID', $msg->body)
->andWhere('fv.fvIsApproved = 1')
->setMaxResults(1)
;
$resp = $query->execute();
$results = $resp->fetchAll();
if (count($results)) {
$result = $results[0];
$cf = \Core::make('helper/concrete/file');
$path = self::$basePath . $cf->prefix($result['fvPrefix'], $result['fvFilename']);
$importer = new Importer();
$fv = $importer->import($path);
if (is_object($fv)) {
\Log::info(sprintf('Import success: %s', $result['fvFilename']));
} else {
\Log::error(sprintf('Import failed: %s', $path));
}
unset($fv);
unset($result);
unset($cf);
unset($path);
unset($importer);
}
unset($results);
unset($resp);
unset($query);
unset($qb);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment