本文整理汇总了PHP中FilesModel::findByFound方法的典型用法代码示例。如果您正苦于以下问题:PHP FilesModel::findByFound方法的具体用法?PHP FilesModel::findByFound怎么用?PHP FilesModel::findByFound使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FilesModel
的用法示例。
在下文中一共展示了FilesModel::findByFound方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: syncFiles
/**
* Synchronize the file system with the database
*
* @return string The path to the synchronization log file
*
* @throws \Exception If a parent ID entry is missing
*/
public static function syncFiles()
{
// Try to raise the limits (see #7035)
@ini_set('memory_limit', -1);
@ini_set('max_execution_time', 0);
$objDatabase = \Database::getInstance();
// Lock the files table
$objDatabase->lockTables(array('tl_files'));
// Reset the "found" flag
$objDatabase->query("UPDATE tl_files SET found=''");
// Get a filtered list of all files
$objFiles = new \RecursiveIteratorIterator(new \Dbafs\Filter(new \RecursiveDirectoryIterator(TL_ROOT . '/' . \Config::get('uploadPath'), \FilesystemIterator::UNIX_PATHS | \FilesystemIterator::FOLLOW_SYMLINKS | \FilesystemIterator::SKIP_DOTS)), \RecursiveIteratorIterator::SELF_FIRST);
$strLog = 'system/tmp/' . md5(uniqid(mt_rand(), true));
// Open the log file
$objLog = new \File($strLog, true);
$objLog->truncate();
$arrModels = array();
// Create or update the database entries
foreach ($objFiles as $objFile) {
$strRelpath = str_replace(TL_ROOT . '/', '', $objFile->getPathname());
// Get all subfiles in a single query
if ($objFile->isDir()) {
$objSubfiles = \FilesModel::findMultipleFilesByFolder($strRelpath);
if ($objSubfiles !== null) {
while ($objSubfiles->next()) {
$arrModels[$objSubfiles->path] = $objSubfiles->current();
}
}
}
// Get the model
if (isset($arrModels[$strRelpath])) {
$objModel = $arrModels[$strRelpath];
} else {
$objModel = \FilesModel::findByPath($strRelpath);
}
if ($objModel === null) {
// Add a log entry
$objLog->append("[Added] {$strRelpath}");
// Get the parent folder
$strParent = dirname($strRelpath);
// Get the parent ID
if ($strParent == \Config::get('uploadPath')) {
$strPid = null;
} else {
$objParent = \FilesModel::findByPath($strParent);
if ($objParent === null) {
throw new \Exception("No parent entry for {$strParent}");
}
$strPid = $objParent->uuid;
}
// Create the file or folder
if (is_file(TL_ROOT . '/' . $strRelpath)) {
$objFile = new \File($strRelpath, true);
$objModel = new \FilesModel();
$objModel->pid = $strPid;
$objModel->tstamp = time();
$objModel->name = $objFile->name;
$objModel->type = 'file';
$objModel->path = $objFile->path;
$objModel->extension = $objFile->extension;
$objModel->found = 2;
$objModel->hash = $objFile->hash;
$objModel->uuid = $objDatabase->getUuid();
$objModel->save();
} else {
$objFolder = new \Folder($strRelpath);
$objModel = new \FilesModel();
$objModel->pid = $strPid;
$objModel->tstamp = time();
$objModel->name = $objFolder->name;
$objModel->type = 'folder';
$objModel->path = $objFolder->path;
$objModel->extension = '';
$objModel->found = 2;
$objModel->hash = $objFolder->hash;
$objModel->uuid = $objDatabase->getUuid();
$objModel->save();
}
} else {
// Check whether the MD5 hash has changed
$objResource = $objFile->isDir() ? new \Folder($strRelpath) : new \File($strRelpath);
$strType = $objModel->hash != $objResource->hash ? 'Changed' : 'Unchanged';
// Add a log entry
$objLog->append("[{$strType}] {$strRelpath}");
// Update the record
$objModel->found = 1;
$objModel->hash = $objResource->hash;
$objModel->save();
}
}
// Check for left-over entries in the DB
$objFiles = \FilesModel::findByFound('');
if ($objFiles !== null) {
//.........这里部分代码省略.........
示例2: sync
/**
* Synchronize the file system with the database
* @return string
*/
public function sync()
{
if (!$this->blnIsDbAssisted) {
return '';
}
$this->arrMessages = array();
// Reset the "found" flag
$this->Database->query("UPDATE tl_files SET found=''");
// Traverse the file system
$this->execSync($GLOBALS['TL_CONFIG']['uploadPath']);
// Check for left-over entries in the DB
$objFiles = \FilesModel::findByFound('');
if ($objFiles !== null) {
$arrFiles = array();
$arrFolders = array();
while ($objFiles->next()) {
if ($objFiles->type == 'file') {
$arrFiles[] = $objFiles->current();
} else {
$arrFolders[] = $objFiles->current();
}
}
// Check whether a folder has moved
foreach ($arrFolders as $objFolder) {
$objFound = \FilesModel::findBy(array('hash=?', 'found=1'), $objFolder->hash);
if ($objFound !== null) {
$this->arrMessages[] = '<p class="tl_info">' . sprintf($GLOBALS['TL_LANG']['tl_files']['syncFound'], $objFolder->path, $objFound->path) . '</p>';
// Update the original entry
$objFolder->pid = $objFound->pid;
$objFolder->tstamp = $objFound->tstamp;
$objFolder->name = $objFound->name;
$objFolder->type = $objFound->type;
$objFolder->path = $objFound->path;
$objFolder->save();
// Update the PID of the child records
$objChildren = \FilesModel::findByPid($objFound->id);
if ($objChildren !== null) {
while ($objChildren->next()) {
$objChildren->pid = $objFolder->id;
$objChildren->save();
}
}
// Delete the newer (duplicate) entry
$objFound->delete();
} else {
// Delete the entry if the folder has gone
$objFolder->delete();
$this->arrMessages[] = '<p class="tl_error">' . sprintf($GLOBALS['TL_LANG']['tl_files']['syncRemoved'], $objFolder->path) . '</p>';
}
}
// Check whether a file has moved
foreach ($arrFiles as $objFile) {
$objFound = \FilesModel::findBy(array('hash=?', 'found=1'), $objFile->hash);
if ($objFound !== null) {
$this->arrMessages[] = '<p class="tl_info">' . sprintf($GLOBALS['TL_LANG']['tl_files']['syncFound'], $objFile->path, $objFound->path) . '</p>';
// Update the original entry
$objFile->pid = $objFound->pid;
$objFile->tstamp = $objFound->tstamp;
$objFile->name = $objFound->name;
$objFile->type = $objFound->type;
$objFile->path = $objFound->path;
$objFile->save();
// Delete the newer (duplicate) entry
$objFound->delete();
} else {
// Delete the entry if the file has gone
$objFile->delete();
$this->arrMessages[] = '<p class="tl_error">' . sprintf($GLOBALS['TL_LANG']['tl_files']['syncRemoved'], $objFile->path) . '</p>';
}
}
}
$return = '
<div id="tl_buttons">
<a href="' . $this->getReferer(true) . '" class="header_back" title="' . specialchars($GLOBALS['TL_LANG']['MSC']['backBTTitle']) . '" accesskey="b" onclick="Backend.getScrollOffset()">' . $GLOBALS['TL_LANG']['MSC']['backBT'] . '</a>
</div>
<h2 class="sub_headline">' . $GLOBALS['TL_LANG']['tl_files']['sync'][1] . '</h2>
' . \Message::generate() . '
<div class="tl_message nobg" style="margin-bottom:2em">';
// Add the messages
foreach ($this->arrMessages as $strMessage) {
$return .= "\n " . $strMessage;
}
$return .= '
</div>
<div class="tl_submit_container">
<a href="' . $this->getReferer(true) . '" class="tl_submit" style="display:inline-block">' . $GLOBALS['TL_LANG']['MSC']['continue'] . '</a>
</div>
';
return $return;
}