summaryrefslogtreecommitdiffstats
path: root/lib/private
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private')
-rw-r--r--lib/private/Comments/Manager.php212
-rw-r--r--lib/private/DB/QueryBuilder/QuoteHelper.php2
-rw-r--r--lib/private/Mail/EMailTemplate.php10
-rw-r--r--lib/private/Mail/IEMailTemplate.php8
-rw-r--r--lib/private/Mail/Mailer.php7
-rw-r--r--lib/private/Repair/CleanTags.php2
-rw-r--r--lib/private/Server.php10
-rw-r--r--lib/private/Setup.php12
-rw-r--r--lib/private/Share/MailNotifications.php1
-rw-r--r--lib/private/Share20/DefaultShareProvider.php2
-rw-r--r--lib/private/Template/Base.php6
-rw-r--r--lib/private/Template/JSConfigHelper.php7
-rw-r--r--lib/private/TemplateLayout.php3
-rw-r--r--lib/private/legacy/defaults.php18
-rw-r--r--lib/private/legacy/template.php3
-rw-r--r--lib/private/legacy/util.php2
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();