diff options
Diffstat (limited to 'lib/private')
-rw-r--r-- | lib/private/Comments/Manager.php | 212 | ||||
-rw-r--r-- | lib/private/DB/QueryBuilder/QuoteHelper.php | 2 | ||||
-rw-r--r-- | lib/private/Mail/EMailTemplate.php | 10 | ||||
-rw-r--r-- | lib/private/Mail/IEMailTemplate.php | 8 | ||||
-rw-r--r-- | lib/private/Mail/Mailer.php | 7 | ||||
-rw-r--r-- | lib/private/Repair/CleanTags.php | 2 | ||||
-rw-r--r-- | lib/private/Server.php | 10 | ||||
-rw-r--r-- | lib/private/Setup.php | 12 | ||||
-rw-r--r-- | lib/private/Share/MailNotifications.php | 1 | ||||
-rw-r--r-- | lib/private/Share20/DefaultShareProvider.php | 2 | ||||
-rw-r--r-- | lib/private/Template/Base.php | 6 | ||||
-rw-r--r-- | lib/private/Template/JSConfigHelper.php | 7 | ||||
-rw-r--r-- | lib/private/TemplateLayout.php | 3 | ||||
-rw-r--r-- | lib/private/legacy/defaults.php | 18 | ||||
-rw-r--r-- | lib/private/legacy/template.php | 3 | ||||
-rw-r--r-- | lib/private/legacy/util.php | 2 |
16 files changed, 188 insertions, 117 deletions
diff --git a/lib/private/Comments/Manager.php b/lib/private/Comments/Manager.php index 1467fef727b..695d209b68f 100644 --- a/lib/private/Comments/Manager.php +++ b/lib/private/Comments/Manager.php @@ -21,9 +21,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/> * */ + namespace OC\Comments; use Doctrine\DBAL\Exception\DriverException; +use Doctrine\DBAL\Platforms\MySqlPlatform; use OCP\Comments\CommentsEvent; use OCP\Comments\IComment; use OCP\Comments\ICommentsEventHandler; @@ -46,7 +48,7 @@ class Manager implements ICommentsManager { /** @var IConfig */ protected $config; - /** @var IComment[] */ + /** @var IComment[] */ protected $commentsCache = []; /** @var \Closure[] */ @@ -104,7 +106,7 @@ class Manager implements ICommentsManager { * @throws \UnexpectedValueException */ protected function prepareCommentForDatabaseWrite(IComment $comment) { - if( !$comment->getActorType() + if (!$comment->getActorType() || !$comment->getActorId() || !$comment->getObjectType() || !$comment->getObjectId() @@ -113,17 +115,17 @@ class Manager implements ICommentsManager { throw new \UnexpectedValueException('Actor, Object and Verb information must be provided for saving'); } - if($comment->getId() === '') { + if ($comment->getId() === '') { $comment->setChildrenCount(0); $comment->setLatestChildDateTime(new \DateTime('0000-00-00 00:00:00', new \DateTimeZone('UTC'))); $comment->setLatestChildDateTime(null); } - if(is_null($comment->getCreationDateTime())) { + if (is_null($comment->getCreationDateTime())) { $comment->setCreationDateTime(new \DateTime()); } - if($comment->getParentId() !== '0') { + if ($comment->getParentId() !== '0') { $comment->setTopmostParentId($this->determineTopmostParentId($comment->getParentId())); } else { $comment->setTopmostParentId('0'); @@ -143,7 +145,7 @@ class Manager implements ICommentsManager { */ protected function determineTopmostParentId($id) { $comment = $this->get($id); - if($comment->getParentId() === '0') { + if ($comment->getParentId() === '0') { return $comment->getId(); } else { return $this->determineTopmostParentId($comment->getId()); @@ -153,16 +155,16 @@ class Manager implements ICommentsManager { /** * updates child information of a comment * - * @param string $id - * @param \DateTime $cDateTime the date time of the most recent child + * @param string $id + * @param \DateTime $cDateTime the date time of the most recent child * @throws NotFoundException */ protected function updateChildrenInformation($id, \DateTime $cDateTime) { $qb = $this->dbConn->getQueryBuilder(); $query = $qb->select($qb->createFunction('COUNT(`id`)')) - ->from('comments') - ->where($qb->expr()->eq('parent_id', $qb->createParameter('id'))) - ->setParameter('id', $id); + ->from('comments') + ->where($qb->expr()->eq('parent_id', $qb->createParameter('id'))) + ->setParameter('id', $id); $resultStatement = $query->execute(); $data = $resultStatement->fetch(\PDO::FETCH_NUM); @@ -185,8 +187,8 @@ class Manager implements ICommentsManager { * @throws \InvalidArgumentException */ protected function checkRoleParameters($role, $type, $id) { - if( - !is_string($type) || empty($type) + if ( + !is_string($type) || empty($type) || !is_string($id) || empty($id) ) { throw new \InvalidArgumentException($role . ' parameters must be string and not empty'); @@ -200,7 +202,7 @@ class Manager implements ICommentsManager { */ protected function cache(IComment $comment) { $id = $comment->getId(); - if(empty($id)) { + if (empty($id)) { return; } $this->commentsCache[strval($id)] = $comment; @@ -228,11 +230,11 @@ class Manager implements ICommentsManager { * @since 9.0.0 */ public function get($id) { - if(intval($id) === 0) { + if (intval($id) === 0) { throw new \InvalidArgumentException('IDs must be translatable to a number in this implementation.'); } - if(isset($this->commentsCache[$id])) { + if (isset($this->commentsCache[$id])) { return $this->commentsCache[$id]; } @@ -245,7 +247,7 @@ class Manager implements ICommentsManager { $data = $resultStatement->fetch(); $resultStatement->closeCursor(); - if(!$data) { + if (!$data) { throw new NotFoundException(); } @@ -290,20 +292,20 @@ class Manager implements ICommentsManager { $qb = $this->dbConn->getQueryBuilder(); $query = $qb->select('*') - ->from('comments') - ->where($qb->expr()->eq('topmost_parent_id', $qb->createParameter('id'))) - ->orderBy('creation_timestamp', 'DESC') - ->setParameter('id', $id); + ->from('comments') + ->where($qb->expr()->eq('topmost_parent_id', $qb->createParameter('id'))) + ->orderBy('creation_timestamp', 'DESC') + ->setParameter('id', $id); - if($limit > 0) { + if ($limit > 0) { $query->setMaxResults($limit); } - if($offset > 0) { + if ($offset > 0) { $query->setFirstResult($offset); } $resultStatement = $query->execute(); - while($data = $resultStatement->fetch()) { + while ($data = $resultStatement->fetch()) { $comment = new Comment($this->normalizeDatabaseData($data)); $this->cache($comment); $tree['replies'][] = [ @@ -332,37 +334,37 @@ class Manager implements ICommentsManager { * @since 9.0.0 */ public function getForObject( - $objectType, - $objectId, - $limit = 0, - $offset = 0, - \DateTime $notOlderThan = null + $objectType, + $objectId, + $limit = 0, + $offset = 0, + \DateTime $notOlderThan = null ) { $comments = []; $qb = $this->dbConn->getQueryBuilder(); $query = $qb->select('*') - ->from('comments') - ->where($qb->expr()->eq('object_type', $qb->createParameter('type'))) - ->andWhere($qb->expr()->eq('object_id', $qb->createParameter('id'))) - ->orderBy('creation_timestamp', 'DESC') - ->setParameter('type', $objectType) - ->setParameter('id', $objectId); - - if($limit > 0) { + ->from('comments') + ->where($qb->expr()->eq('object_type', $qb->createParameter('type'))) + ->andWhere($qb->expr()->eq('object_id', $qb->createParameter('id'))) + ->orderBy('creation_timestamp', 'DESC') + ->setParameter('type', $objectType) + ->setParameter('id', $objectId); + + if ($limit > 0) { $query->setMaxResults($limit); } - if($offset > 0) { + if ($offset > 0) { $query->setFirstResult($offset); } - if(!is_null($notOlderThan)) { + if (!is_null($notOlderThan)) { $query ->andWhere($qb->expr()->gt('creation_timestamp', $qb->createParameter('notOlderThan'))) ->setParameter('notOlderThan', $notOlderThan, 'datetime'); } $resultStatement = $query->execute(); - while($data = $resultStatement->fetch()) { + while ($data = $resultStatement->fetch()) { $comment = new Comment($this->normalizeDatabaseData($data)); $this->cache($comment); $comments[] = $comment; @@ -383,13 +385,13 @@ class Manager implements ICommentsManager { public function getNumberOfCommentsForObject($objectType, $objectId, \DateTime $notOlderThan = null) { $qb = $this->dbConn->getQueryBuilder(); $query = $qb->select($qb->createFunction('COUNT(`id`)')) - ->from('comments') - ->where($qb->expr()->eq('object_type', $qb->createParameter('type'))) - ->andWhere($qb->expr()->eq('object_id', $qb->createParameter('id'))) - ->setParameter('type', $objectType) - ->setParameter('id', $objectId); + ->from('comments') + ->where($qb->expr()->eq('object_type', $qb->createParameter('type'))) + ->andWhere($qb->expr()->eq('object_id', $qb->createParameter('id'))) + ->setParameter('type', $objectType) + ->setParameter('id', $objectId); - if(!is_null($notOlderThan)) { + if (!is_null($notOlderThan)) { $query ->andWhere($qb->expr()->gt('creation_timestamp', $qb->createParameter('notOlderThan'))) ->setParameter('notOlderThan', $notOlderThan, 'datetime'); @@ -402,6 +404,40 @@ class Manager implements ICommentsManager { } /** + * Get the number of unread comments for all files in a folder + * + * @param int $folderId + * @param IUser $user + * @return array [$fileId => $unreadCount] + */ + public function getNumberOfUnreadCommentsForFolder($folderId, IUser $user) { + $qb = $this->dbConn->getQueryBuilder(); + $query = $qb->select('fileid', $qb->createFunction( + 'COUNT(' . $qb->getColumnName('c.id') . ')') + )->from('comments', 'c') + ->innerJoin('c', 'filecache', 'f', $qb->expr()->andX( + $qb->expr()->eq('c.object_type', $qb->createNamedParameter('files')), + $qb->expr()->eq('f.fileid', $qb->expr()->castColumn('c.object_id', IQueryBuilder::PARAM_INT)) + )) + ->leftJoin('c', 'comments_read_markers', 'm', $qb->expr()->andX( + $qb->expr()->eq('m.object_type', $qb->createNamedParameter('files')), + $qb->expr()->eq('m.object_id', 'c.object_id'), + $qb->expr()->eq('m.user_id', $qb->createNamedParameter($user->getUID())) + )) + ->andWhere($qb->expr()->eq('f.parent', $qb->createNamedParameter($folderId))) + ->andWhere($qb->expr()->orX( + $qb->expr()->gt('c.creation_timestamp', 'marker_datetime'), + $qb->expr()->isNull('marker_datetime') + )) + ->groupBy('f.fileid'); + + $resultStatement = $query->execute(); + return array_map(function ($count) { + return (int)$count; + }, $resultStatement->fetchAll(\PDO::FETCH_KEY_PAIR)); + } + + /** * creates a new comment and returns it. At this point of time, it is not * saved in the used data storage. Use save() after setting other fields * of the comment (e.g. message or verb). @@ -433,7 +469,7 @@ class Manager implements ICommentsManager { * @since 9.0.0 */ public function delete($id) { - if(!is_string($id)) { + if (!is_string($id)) { throw new \InvalidArgumentException('Parameter must be string'); } @@ -481,16 +517,16 @@ class Manager implements ICommentsManager { * @since 9.0.0 */ public function save(IComment $comment) { - if($this->prepareCommentForDatabaseWrite($comment)->getId() === '') { + if ($this->prepareCommentForDatabaseWrite($comment)->getId() === '') { $result = $this->insert($comment); } else { $result = $this->update($comment); } - if($result && !!$comment->getParentId()) { + if ($result && !!$comment->getParentId()) { $this->updateChildrenInformation( - $comment->getParentId(), - $comment->getCreationDateTime() + $comment->getParentId(), + $comment->getCreationDateTime() ); $this->cache($comment); } @@ -509,17 +545,17 @@ class Manager implements ICommentsManager { $affectedRows = $qb ->insert('comments') ->values([ - 'parent_id' => $qb->createNamedParameter($comment->getParentId()), - 'topmost_parent_id' => $qb->createNamedParameter($comment->getTopmostParentId()), - 'children_count' => $qb->createNamedParameter($comment->getChildrenCount()), - 'actor_type' => $qb->createNamedParameter($comment->getActorType()), - 'actor_id' => $qb->createNamedParameter($comment->getActorId()), - 'message' => $qb->createNamedParameter($comment->getMessage()), - 'verb' => $qb->createNamedParameter($comment->getVerb()), - 'creation_timestamp' => $qb->createNamedParameter($comment->getCreationDateTime(), 'datetime'), - 'latest_child_timestamp' => $qb->createNamedParameter($comment->getLatestChildDateTime(), 'datetime'), - 'object_type' => $qb->createNamedParameter($comment->getObjectType()), - 'object_id' => $qb->createNamedParameter($comment->getObjectId()), + 'parent_id' => $qb->createNamedParameter($comment->getParentId()), + 'topmost_parent_id' => $qb->createNamedParameter($comment->getTopmostParentId()), + 'children_count' => $qb->createNamedParameter($comment->getChildrenCount()), + 'actor_type' => $qb->createNamedParameter($comment->getActorType()), + 'actor_id' => $qb->createNamedParameter($comment->getActorId()), + 'message' => $qb->createNamedParameter($comment->getMessage()), + 'verb' => $qb->createNamedParameter($comment->getVerb()), + 'creation_timestamp' => $qb->createNamedParameter($comment->getCreationDateTime(), 'datetime'), + 'latest_child_timestamp' => $qb->createNamedParameter($comment->getLatestChildDateTime(), 'datetime'), + 'object_type' => $qb->createNamedParameter($comment->getObjectType()), + 'object_id' => $qb->createNamedParameter($comment->getObjectId()), ]) ->execute(); @@ -548,22 +584,22 @@ class Manager implements ICommentsManager { $qb = $this->dbConn->getQueryBuilder(); $affectedRows = $qb ->update('comments') - ->set('parent_id', $qb->createNamedParameter($comment->getParentId())) - ->set('topmost_parent_id', $qb->createNamedParameter($comment->getTopmostParentId())) - ->set('children_count', $qb->createNamedParameter($comment->getChildrenCount())) - ->set('actor_type', $qb->createNamedParameter($comment->getActorType())) - ->set('actor_id', $qb->createNamedParameter($comment->getActorId())) - ->set('message', $qb->createNamedParameter($comment->getMessage())) - ->set('verb', $qb->createNamedParameter($comment->getVerb())) - ->set('creation_timestamp', $qb->createNamedParameter($comment->getCreationDateTime(), 'datetime')) - ->set('latest_child_timestamp', $qb->createNamedParameter($comment->getLatestChildDateTime(), 'datetime')) - ->set('object_type', $qb->createNamedParameter($comment->getObjectType())) - ->set('object_id', $qb->createNamedParameter($comment->getObjectId())) + ->set('parent_id', $qb->createNamedParameter($comment->getParentId())) + ->set('topmost_parent_id', $qb->createNamedParameter($comment->getTopmostParentId())) + ->set('children_count', $qb->createNamedParameter($comment->getChildrenCount())) + ->set('actor_type', $qb->createNamedParameter($comment->getActorType())) + ->set('actor_id', $qb->createNamedParameter($comment->getActorId())) + ->set('message', $qb->createNamedParameter($comment->getMessage())) + ->set('verb', $qb->createNamedParameter($comment->getVerb())) + ->set('creation_timestamp', $qb->createNamedParameter($comment->getCreationDateTime(), 'datetime')) + ->set('latest_child_timestamp', $qb->createNamedParameter($comment->getLatestChildDateTime(), 'datetime')) + ->set('object_type', $qb->createNamedParameter($comment->getObjectType())) + ->set('object_id', $qb->createNamedParameter($comment->getObjectId())) ->where($qb->expr()->eq('id', $qb->createParameter('id'))) ->setParameter('id', $comment->getId()) ->execute(); - if($affectedRows === 0) { + if ($affectedRows === 0) { throw new NotFoundException('Comment to update does ceased to exist'); } @@ -587,8 +623,8 @@ class Manager implements ICommentsManager { $qb = $this->dbConn->getQueryBuilder(); $affectedRows = $qb ->update('comments') - ->set('actor_type', $qb->createNamedParameter(ICommentsManager::DELETED_USER)) - ->set('actor_id', $qb->createNamedParameter(ICommentsManager::DELETED_USER)) + ->set('actor_type', $qb->createNamedParameter(ICommentsManager::DELETED_USER)) + ->set('actor_id', $qb->createNamedParameter(ICommentsManager::DELETED_USER)) ->where($qb->expr()->eq('actor_type', $qb->createParameter('type'))) ->andWhere($qb->expr()->eq('actor_id', $qb->createParameter('id'))) ->setParameter('type', $actorType) @@ -662,19 +698,19 @@ class Manager implements ICommentsManager { $qb = $this->dbConn->getQueryBuilder(); $values = [ - 'user_id' => $qb->createNamedParameter($user->getUID()), + 'user_id' => $qb->createNamedParameter($user->getUID()), 'marker_datetime' => $qb->createNamedParameter($dateTime, 'datetime'), - 'object_type' => $qb->createNamedParameter($objectType), - 'object_id' => $qb->createNamedParameter($objectId), + 'object_type' => $qb->createNamedParameter($objectType), + 'object_id' => $qb->createNamedParameter($objectId), ]; // Strategy: try to update, if this does not return affected rows, do an insert. $affectedRows = $qb ->update('comments_read_markers') - ->set('user_id', $values['user_id']) + ->set('user_id', $values['user_id']) ->set('marker_datetime', $values['marker_datetime']) - ->set('object_type', $values['object_type']) - ->set('object_id', $values['object_id']) + ->set('object_type', $values['object_type']) + ->set('object_id', $values['object_id']) ->where($qb->expr()->eq('user_id', $qb->createParameter('user_id'))) ->andWhere($qb->expr()->eq('object_type', $qb->createParameter('object_type'))) ->andWhere($qb->expr()->eq('object_id', $qb->createParameter('object_id'))) @@ -717,7 +753,7 @@ class Manager implements ICommentsManager { $data = $resultStatement->fetch(); $resultStatement->closeCursor(); - if(!$data || is_null($data['marker_datetime'])) { + if (!$data || is_null($data['marker_datetime'])) { return null; } @@ -774,10 +810,10 @@ class Manager implements ICommentsManager { * \OutOfBoundsException has to thrown. */ public function registerDisplayNameResolver($type, \Closure $closure) { - if(!is_string($type)) { + if (!is_string($type)) { throw new \InvalidArgumentException('String expected.'); } - if(isset($this->displayNameResolvers[$type])) { + if (isset($this->displayNameResolvers[$type])) { throw new \OutOfBoundsException('Displayname resolver for this type already registered'); } $this->displayNameResolvers[$type] = $closure; @@ -797,10 +833,10 @@ class Manager implements ICommentsManager { * provided ID is unknown. It must be ensured that a string is returned. */ public function resolveDisplayName($type, $id) { - if(!is_string($type)) { + if (!is_string($type)) { throw new \InvalidArgumentException('String expected.'); } - if(!isset($this->displayNameResolvers[$type])) { + if (!isset($this->displayNameResolvers[$type])) { throw new \OutOfBoundsException('No Displayname resolver for this type registered'); } return (string)$this->displayNameResolvers[$type]($id); @@ -812,7 +848,7 @@ class Manager implements ICommentsManager { * @return \OCP\Comments\ICommentsEventHandler[] */ private function getEventHandlers() { - if(!empty($this->eventHandlers)) { + if (!empty($this->eventHandlers)) { return $this->eventHandlers; } diff --git a/lib/private/DB/QueryBuilder/QuoteHelper.php b/lib/private/DB/QueryBuilder/QuoteHelper.php index 041718bce5a..705c3a89712 100644 --- a/lib/private/DB/QueryBuilder/QuoteHelper.php +++ b/lib/private/DB/QueryBuilder/QuoteHelper.php @@ -73,7 +73,7 @@ class QuoteHelper { return $string; } - return $alias . '.`' . $columnName . '`'; + return '`' . $alias . '`.`' . $columnName . '`'; } return '`' . $string . '`'; diff --git a/lib/private/Mail/EMailTemplate.php b/lib/private/Mail/EMailTemplate.php index 7d3ca51c50e..c84af6331dc 100644 --- a/lib/private/Mail/EMailTemplate.php +++ b/lib/private/Mail/EMailTemplate.php @@ -25,7 +25,7 @@ namespace OC\Mail; -use OCA\Theming\ThemingDefaults; +use OCP\Defaults; use OCP\IL10N; use OCP\IURLGenerator; @@ -38,7 +38,7 @@ use OCP\IURLGenerator; * @package OC\Mail */ class EMailTemplate implements IEMailTemplate { - /** @var ThemingDefaults */ + /** @var Defaults */ protected $themingDefaults; /** @var IURLGenerator */ protected $urlGenerator; @@ -264,11 +264,11 @@ EOF; EOF; /** - * @param ThemingDefaults $themingDefaults + * @param Defaults $themingDefaults * @param IURLGenerator $urlGenerator * @param IL10N $l10n */ - public function __construct(ThemingDefaults $themingDefaults, + public function __construct(Defaults $themingDefaults, IURLGenerator $urlGenerator, IL10N $l10n) { $this->themingDefaults = $themingDefaults; @@ -286,7 +286,7 @@ EOF; } $this->headerAdded = true; - $logoUrl = $this->urlGenerator->getAbsoluteURL($this->themingDefaults->getLogo()) . '?v='. $this->themingDefaults->getCacheBusterCounter(); + $logoUrl = $this->urlGenerator->getAbsoluteURL($this->themingDefaults->getLogo()); $this->htmlBody .= vsprintf($this->header, [$this->themingDefaults->getColorPrimary(), $logoUrl]); } diff --git a/lib/private/Mail/IEMailTemplate.php b/lib/private/Mail/IEMailTemplate.php index 0d660a35516..baa29735988 100644 --- a/lib/private/Mail/IEMailTemplate.php +++ b/lib/private/Mail/IEMailTemplate.php @@ -23,6 +23,8 @@ namespace OC\Mail; +use OCP\Defaults; + /** * Interface IEMailTemplate * @@ -32,7 +34,7 @@ namespace OC\Mail; * * <?php * - * $emailTemplate = new EMailTemplate($this->defaults); + * $emailTemplate = new EMailTemplate($this->defaults, $this->urlGenerator, $this->l10n); * * $emailTemplate->addHeader(); * $emailTemplate->addHeading('Welcome aboard'); @@ -50,11 +52,11 @@ namespace OC\Mail; */ interface IEMailTemplate { /** - * @param \OCA\Theming\ThemingDefaults $themingDefaults + * @param Defaults $themingDefaults * @param \OCP\IURLGenerator $urlGenerator * @param \OCP\IL10N $l10n */ - public function __construct(\OCA\Theming\ThemingDefaults $themingDefaults, + public function __construct(Defaults $themingDefaults, \OCP\IURLGenerator $urlGenerator, \OCP\IL10N $l10n); diff --git a/lib/private/Mail/Mailer.php b/lib/private/Mail/Mailer.php index e704e8e3490..8a6b6fce899 100644 --- a/lib/private/Mail/Mailer.php +++ b/lib/private/Mail/Mailer.php @@ -22,6 +22,7 @@ namespace OC\Mail; +use OCP\Defaults; use OCP\IConfig; use OCP\Mail\IMailer; use OCP\ILogger; @@ -51,17 +52,17 @@ class Mailer implements IMailer { private $config; /** @var ILogger */ private $logger; - /** @var \OC_Defaults */ + /** @var Defaults */ private $defaults; /** * @param IConfig $config * @param ILogger $logger - * @param \OC_Defaults $defaults + * @param Defaults $defaults */ function __construct(IConfig $config, ILogger $logger, - \OC_Defaults $defaults) { + Defaults $defaults) { $this->config = $config; $this->logger = $logger; $this->defaults = $defaults; diff --git a/lib/private/Repair/CleanTags.php b/lib/private/Repair/CleanTags.php index 8b62395a501..9b44fb1e671 100644 --- a/lib/private/Repair/CleanTags.php +++ b/lib/private/Repair/CleanTags.php @@ -173,7 +173,7 @@ class CleanTags implements IRepairStep { $qb->select('d.' . $deleteId) ->from($deleteTable, 'd') - ->leftJoin('d', $sourceTable, 's', $qb->expr()->eq('d.' . $deleteId, ' s.' . $sourceId)) + ->leftJoin('d', $sourceTable, 's', $qb->expr()->eq('d.' . $deleteId, 's.' . $sourceId)) ->where( $qb->expr()->eq('d.type', $qb->expr()->literal('files')) ) diff --git a/lib/private/Server.php b/lib/private/Server.php index 0d05bfe0dc8..9b2380ac7ac 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -95,6 +95,7 @@ use OC\Session\CryptoWrapper; use OC\Tagging\TagMapper; use OCA\Theming\ThemingDefaults; use OCP\App\IAppManager; +use OCP\Defaults; use OCP\Federation\ICloudIdManager; use OCP\Authentication\LoginCredentials\IStore; use OCP\ICacheFactory; @@ -726,7 +727,7 @@ class Server extends ServerContainer implements IServerContainer { return new Mailer( $c->getConfig(), $c->getLogger(), - $c->getThemingDefaults() + $c->query(Defaults::class) ); }); $this->registerAlias('Mailer', \OCP\Mail\IMailer::class); @@ -955,6 +956,13 @@ class Server extends ServerContainer implements IServerContainer { $this->registerAlias(\OCP\AppFramework\Utility\ITimeFactory::class, \OC\AppFramework\Utility\TimeFactory::class); $this->registerAlias('TimeFactory', \OCP\AppFramework\Utility\ITimeFactory::class); + $this->registerService(Defaults::class, function (Server $c) { + return new Defaults( + $c->getThemingDefaults() + ); + }); + $this->registerAlias('Defaults', \OCP\Defaults::class); + $this->registerService(\OCP\ISession::class, function(SimpleContainer $c) { return $c->query(\OCP\IUserSession::class)->getSession(); }); diff --git a/lib/private/Setup.php b/lib/private/Setup.php index 7a2957b5fb3..e2806efad48 100644 --- a/lib/private/Setup.php +++ b/lib/private/Setup.php @@ -41,7 +41,7 @@ namespace OC; use bantu\IniGetWrapper\IniGetWrapper; use Exception; -use OCP\IConfig; +use OCP\Defaults; use OCP\IL10N; use OCP\ILogger; use OCP\Security\ISecureRandom; @@ -53,7 +53,7 @@ class Setup { protected $iniWrapper; /** @var IL10N */ protected $l10n; - /** @var \OC_Defaults */ + /** @var Defaults */ protected $defaults; /** @var ILogger */ protected $logger; @@ -63,12 +63,14 @@ class Setup { /** * @param SystemConfig $config * @param IniGetWrapper $iniWrapper - * @param \OC_Defaults $defaults + * @param Defaults $defaults + * @param ILogger $logger + * @param ISecureRandom $random */ function __construct(SystemConfig $config, IniGetWrapper $iniWrapper, IL10N $l10n, - \OC_Defaults $defaults, + Defaults $defaults, ILogger $logger, ISecureRandom $random ) { @@ -422,7 +424,7 @@ class Setup { } $setupHelper = new \OC\Setup($config, \OC::$server->getIniWrapper(), - \OC::$server->getL10N('lib'), \OC::$server->getThemingDefaults(), \OC::$server->getLogger(), + \OC::$server->getL10N('lib'), \OC::$server->query(Defaults::class), \OC::$server->getLogger(), \OC::$server->getSecureRandom()); $htaccessContent = file_get_contents($setupHelper->pathToHtaccess()); diff --git a/lib/private/Share/MailNotifications.php b/lib/private/Share/MailNotifications.php index 1bbd365699c..1ea053fc499 100644 --- a/lib/private/Share/MailNotifications.php +++ b/lib/private/Share/MailNotifications.php @@ -30,7 +30,6 @@ namespace OC\Share; -use DateTime; use OCP\IL10N; use OCP\IURLGenerator; use OCP\IUser; diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php index bf8bcc9c6d9..feae147066d 100644 --- a/lib/private/Share20/DefaultShareProvider.php +++ b/lib/private/Share20/DefaultShareProvider.php @@ -493,7 +493,7 @@ class DefaultShareProvider implements IShareProvider { ); } - $qb->innerJoin('s', 'filecache' ,'f', 's.file_source = f.fileid'); + $qb->innerJoin('s', 'filecache' ,'f', $qb->expr()->eq('s.file_source', 'f.fileid')); $qb->andWhere($qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId()))); $qb->orderBy('id'); diff --git a/lib/private/Template/Base.php b/lib/private/Template/Base.php index 6af679f0a66..18cf6324089 100644 --- a/lib/private/Template/Base.php +++ b/lib/private/Template/Base.php @@ -28,6 +28,8 @@ namespace OC\Template; +use OCP\Defaults; + class Base { private $template; // The template private $vars; // Vars @@ -35,14 +37,14 @@ class Base { /** @var \OCP\IL10N */ private $l10n; - /** @var \OC_Defaults */ + /** @var Defaults */ private $theme; /** * @param string $template * @param string $requestToken * @param \OCP\IL10N $l10n - * @param \OC_Defaults $theme + * @param Defaults $theme */ public function __construct($template, $requestToken, $l10n, $theme ) { $this->vars = array(); diff --git a/lib/private/Template/JSConfigHelper.php b/lib/private/Template/JSConfigHelper.php index 4fc21680211..9a11e84f8d9 100644 --- a/lib/private/Template/JSConfigHelper.php +++ b/lib/private/Template/JSConfigHelper.php @@ -24,6 +24,7 @@ namespace OC\Template; use bantu\IniGetWrapper\IniGetWrapper; use OCP\App\IAppManager; +use OCP\Defaults; use OCP\IConfig; use OCP\IGroupManager; use OCP\IL10N; @@ -36,7 +37,7 @@ class JSConfigHelper { /** @var IL10N */ private $l; - /** @var \OC_Defaults */ + /** @var Defaults */ private $defaults; /** @var IAppManager */ @@ -62,7 +63,7 @@ class JSConfigHelper { /** * @param IL10N $l - * @param \OC_Defaults $defaults + * @param Defaults $defaults * @param IAppManager $appManager * @param ISession $session * @param IUser|null $currentUser @@ -72,7 +73,7 @@ class JSConfigHelper { * @param IURLGenerator $urlGenerator */ public function __construct(IL10N $l, - \OC_Defaults $defaults, + Defaults $defaults, IAppManager $appManager, ISession $session, $currentUser, diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php index 6dc925f8f8c..7a5984a4924 100644 --- a/lib/private/TemplateLayout.php +++ b/lib/private/TemplateLayout.php @@ -38,6 +38,7 @@ namespace OC; use OC\Template\JSCombiner; use OC\Template\JSConfigHelper; use OC\Template\SCSSCacher; +use OCP\Defaults; class TemplateLayout extends \OC_Template { @@ -135,7 +136,7 @@ class TemplateLayout extends \OC_Template { if (\OC::$server->getContentSecurityPolicyNonceManager()->browserSupportsCspV3()) { $jsConfigHelper = new JSConfigHelper( \OC::$server->getL10N('core'), - \OC::$server->getThemingDefaults(), + \OC::$server->query(Defaults::class), \OC::$server->getAppManager(), \OC::$server->getSession(), \OC::$server->getUserSession()->getUser(), diff --git a/lib/private/legacy/defaults.php b/lib/private/legacy/defaults.php index 9fd9b621a14..10dd935d26b 100644 --- a/lib/private/legacy/defaults.php +++ b/lib/private/legacy/defaults.php @@ -47,6 +47,8 @@ class OC_Defaults { private $defaultSlogan; private $defaultLogoClaim; private $defaultColorPrimary; + private $defaultLogoUrl; + private $defaultCacheBuster; function __construct() { $this->l = \OC::$server->getL10N('lib'); @@ -64,6 +66,8 @@ class OC_Defaults { $this->defaultSlogan = $this->l->t('a safe home for all your data'); $this->defaultLogoClaim = ''; $this->defaultColorPrimary = '#0082c9'; + $this->defaultLogoUrl = \OC::$server->getURLGenerator()->imagePath('core','logo.svg'); + $this->defaultLogoUrl .= '?v=' . hash('sha1', implode('.', \OCP\Util::getVersion())); $themePath = OC::$SERVERROOT . '/themes/' . OC_Util::getTheme() . '/defaults.php'; if (file_exists($themePath)) { @@ -263,6 +267,7 @@ class OC_Defaults { /** * @param string $key + * @return string URL to doc with key */ public function buildDocLinkToKey($key) { if ($this->themeExist('buildDocLinkToKey')) { @@ -289,4 +294,17 @@ class OC_Defaults { public function shouldReplaceIcons() { return false; } + + /** + * Themed logo url + * + * @return string + */ + public function getLogo() { + if ($this->themeExist('getLogo')) { + return $this->theme->getLogo(); + } + + return $this->defaultLogoUrl; + } } diff --git a/lib/private/legacy/template.php b/lib/private/legacy/template.php index 969f5174278..19b5e418110 100644 --- a/lib/private/legacy/template.php +++ b/lib/private/legacy/template.php @@ -79,7 +79,8 @@ class OC_Template extends \OC\Template\Base { $parts = explode('/', $app); // fix translation when app is something like core/lostpassword $l10n = \OC::$server->getL10N($parts[0]); - $themeDefaults = \OC::$server->getThemingDefaults(); + /** @var \OCP\Defaults $themeDefaults */ + $themeDefaults = \OC::$server->query(\OCP\Defaults::class); list($path, $template) = $this->findTemplate($theme, $app, $name); diff --git a/lib/private/legacy/util.php b/lib/private/legacy/util.php index 0fdd6714b1e..5e01b6e2b87 100644 --- a/lib/private/legacy/util.php +++ b/lib/private/legacy/util.php @@ -651,7 +651,7 @@ class OC_Util { $webServerRestart = false; $setup = new \OC\Setup($config, \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), - \OC::$server->getThemingDefaults(), \OC::$server->getLogger(), \OC::$server->getSecureRandom()); + \OC::$server->query(\OCP\Defaults::class), \OC::$server->getLogger(), \OC::$server->getSecureRandom()); $urlGenerator = \OC::$server->getURLGenerator(); |