コード例 #1
0
 public static function postDataWriterSave(XenForo_DataWriter $writer, array $extraData = array())
 {
     $self = new self();
     $oldPath = false;
     $oldData = array_merge($writer->getMergedExistingData(), array('id' => $writer->get('phrase_id')));
     if ($writer->isUpdate()) {
         $oldPath = $self->getDirectory($writer->getMergedExistingData()) . self::$s . $self->getFileName($oldData);
     }
     $newPath = false;
     $newData = array_merge($writer->getMergedData(), array('id' => $writer->get('phrase_id')));
     if ($writer->isChanged('addon_id') or $writer->isChanged('title')) {
         $newPath = $self->getDirectory($newData) . self::$s . $self->getFileName($newData);
     }
     if (!$oldPath) {
         $oldPath = $newPath;
     }
     if (!DevTools_Helper_File::write($oldPath, $writer->get('phrase_text'), array('id' => $writer->get('phrase_id')))) {
         throw new XenForo_Exception("Failed to write phrase file to {$oldPath}");
         return;
     }
     if ($newPath && $oldPath) {
         rename($oldPath, $newPath);
     }
     $self->touchDb();
 }
コード例 #2
0
 public static function postDataWriterSave(XenForo_DataWriter $writer, array $extraData = array())
 {
     if (!isset($extraData['styleId']) || !isset($extraData['self'])) {
         return;
     }
     $styleId = $extraData['styleId'];
     $self = $extraData['self'];
     $oldPath = false;
     $oldData = array_merge($writer->getMergedExistingData(), array('id' => $writer->get('template_id')));
     if ($writer->isUpdate()) {
         $oldPath = $self->getDirectory($writer->getMergedExistingData()) . self::$s . $self->getFileName($oldData);
     }
     $newPath = false;
     $newData = array_merge($writer->getMergedData(), array('id' => $writer->get('template_id')));
     if ($writer->isChanged('addon_id') or $writer->isChanged('title')) {
         $newPath = $self->getDirectory($writer->getMergedData()) . self::$s . $self->getFileName($newData);
     }
     if (!$oldPath) {
         $oldPath = $newPath;
     }
     $contents = XenForo_Model::create('XenForo_Model_StyleProperty')->replacePropertiesInTemplateForEditor($writer->get('template'), $styleId, $self->getPropertiesInStyle($styleId));
     $contents = XenForo_Model::create('XenForo_Model_Template')->replaceIncludesWithLinkRel($contents);
     if (!DevTools_Helper_File::write($oldPath, $contents, array('id' => $writer->get('template_id'), 'dbName' => XenForo_Application::getConfig()->db->dbname))) {
         throw new XenForo_Exception("Failed to write template file to {$oldPath}");
         return;
     }
     if ($newPath and $oldPath) {
         rename($oldPath, $newPath);
     }
     $self->touchDb();
 }
コード例 #3
0
 public function getFilesFromDirectory($dir, &$files)
 {
     $dir = new DirectoryIterator($dir);
     foreach ($dir as $file) {
         if ($file->isDot() or substr($file->getFilename(), 0, 1) == '.' or $file->getFilename() == 'Thumbs.db' or $file->getFilename() == 'desktop.ini') {
             continue;
         }
         if ($file->isDir()) {
             $this->getFilesFromDirectory($file->getPathname(), $files);
             continue;
         }
         if ($file->isFile()) {
             list($title, $id) = DevTools_Helper_File::getIdAndTitleFromFileName($file->getFileName());
             if (!$id or !isset($files[$id]) or $files[$id]['filePath'] != $file->getPathname()) {
                 $files[-count($files) - 1] = array('id' => $id, 'title' => $title, 'fileName' => $file->getFilename(), 'filePath' => $file->getPathname(), 'contents' => file_get_contents($file->getPathname()), 'lastModifiedTime' => $file->getMTime());
             }
         }
     }
 }
コード例 #4
0
 public function trashFile(array $oldData)
 {
     $trashPath = $this->getDirectory($oldData) . self::$s . '.trash' . self::$s . '__' . $oldData['id'] . '.' . $this->getFileName($oldData);
     if (DevTools_Helper_File::createDirectory(dirname($trashPath))) {
         DevTools_Helper_File::write($trashPath, $oldData['contents']);
         $this->printDebugInfo("- backed up to \"{$trashPath}\"\n");
     }
 }