summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/dav/lib/CalDAV/BirthdayService.php65
-rw-r--r--apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php55
-rw-r--r--apps/encryption/tests/MigrationTest.php4
-rw-r--r--apps/files/css/mobile.css7
-rw-r--r--apps/files/js/filelist.js3
-rw-r--r--apps/files/js/search.js4
-rw-r--r--apps/files_sharing/templates/list.php1
-rw-r--r--apps/user_ldap/lib/Access.php26
-rw-r--r--apps/user_ldap/lib/Configuration.php4
-rw-r--r--apps/user_ldap/lib/Connection.php13
-rw-r--r--apps/user_ldap/lib/Group_LDAP.php11
-rw-r--r--apps/user_ldap/lib/User/User.php27
-rw-r--r--apps/user_ldap/lib/User_LDAP.php6
-rw-r--r--apps/user_ldap/lib/Wizard.php22
-rw-r--r--apps/user_ldap/tests/AccessTest.php27
-rw-r--r--apps/user_ldap/tests/ConnectionTest.php6
-rw-r--r--apps/user_ldap/tests/Group_LDAPTest.php14
-rw-r--r--apps/user_ldap/tests/User/UserTest.php18
-rw-r--r--apps/user_ldap/tests/WizardTest.php26
-rw-r--r--apps/workflowengine/lib/Manager.php1
-rw-r--r--apps/workflowengine/tests/ManagerTest.php94
21 files changed, 294 insertions, 140 deletions
diff --git a/apps/dav/lib/CalDAV/BirthdayService.php b/apps/dav/lib/CalDAV/BirthdayService.php
index 71f4940a2c8..bf26aec5377 100644
--- a/apps/dav/lib/CalDAV/BirthdayService.php
+++ b/apps/dav/lib/CalDAV/BirthdayService.php
@@ -62,28 +62,19 @@ class BirthdayService {
* @param string $cardData
*/
public function onCardChanged($addressBookId, $cardUri, $cardData) {
-
$targetPrincipals = $this->getAllAffectedPrincipals($addressBookId);
$book = $this->cardDavBackEnd->getAddressBookById($addressBookId);
$targetPrincipals[] = $book['principaluri'];
+ $datesToSync = [
+ ['postfix' => '', 'field' => 'BDAY', 'symbol' => '*'],
+ ['postfix' => '-death', 'field' => 'DEATHDATE', 'symbol' => "†"],
+ ['postfix' => '-anniversary', 'field' => 'ANNIVERSARY', 'symbol' => "âš­"],
+ ];
foreach ($targetPrincipals as $principalUri) {
$calendar = $this->ensureCalendarExists($principalUri);
- $objectUri = $book['uri'] . '-' . $cardUri. '.ics';
- $calendarData = $this->buildBirthdayFromContact($cardData);
- $existing = $this->calDavBackEnd->getCalendarObject($calendar['id'], $objectUri);
- if (is_null($calendarData)) {
- if (!is_null($existing)) {
- $this->calDavBackEnd->deleteCalendarObject($calendar['id'], $objectUri);
- }
- } else {
- if (is_null($existing)) {
- $this->calDavBackEnd->createCalendarObject($calendar['id'], $objectUri, $calendarData->serialize());
- } else {
- if ($this->birthdayEvenChanged($existing['calendardata'], $calendarData)) {
- $this->calDavBackEnd->updateCalendarObject($calendar['id'], $objectUri, $calendarData->serialize());
- }
- }
+ foreach ($datesToSync as $type) {
+ $this->updateCalendar($cardUri, $cardData, $book, $calendar['id'], $type);
}
}
}
@@ -98,8 +89,10 @@ class BirthdayService {
$targetPrincipals[] = $book['principaluri'];
foreach ($targetPrincipals as $principalUri) {
$calendar = $this->ensureCalendarExists($principalUri);
- $objectUri = $book['uri'] . '-' . $cardUri . '.ics';
- $this->calDavBackEnd->deleteCalendarObject($calendar['id'], $objectUri);
+ foreach (['', '-death', '-anniversary'] as $tag) {
+ $objectUri = $book['uri'] . '-' . $cardUri . $tag .'.ics';
+ $this->calDavBackEnd->deleteCalendarObject($calendar['id'], $objectUri);
+ }
}
}
@@ -124,9 +117,11 @@ class BirthdayService {
/**
* @param string $cardData
+ * @param string $dateField
+ * @param string $summarySymbol
* @return null|VCalendar
*/
- public function buildBirthdayFromContact($cardData) {
+ public function buildDateFromContact($cardData, $dateField, $summarySymbol) {
if (empty($cardData)) {
return null;
}
@@ -136,10 +131,10 @@ class BirthdayService {
return null;
}
- if (!isset($doc->BDAY)) {
+ if (!isset($doc->{$dateField})) {
return null;
}
- $birthday = $doc->BDAY;
+ $birthday = $doc->{$dateField};
if (!(string)$birthday) {
return null;
}
@@ -168,7 +163,7 @@ class BirthdayService {
$vEvent->DTEND['VALUE'] = 'DATE';
$vEvent->{'UID'} = $doc->UID;
$vEvent->{'RRULE'} = 'FREQ=YEARLY';
- $vEvent->{'SUMMARY'} = $title . ' (*' . $date->format('Y') . ')';
+ $vEvent->{'SUMMARY'} = $title . ' (' . $summarySymbol . $date->format('Y') . ')';
$vEvent->{'TRANSP'} = 'TRANSPARENT';
$alarm = $vCal->createComponent('VALARM');
$alarm->add($vCal->createProperty('TRIGGER', '-PT0M', ['VALUE' => 'DURATION']));
@@ -233,4 +228,30 @@ class BirthdayService {
return array_values(array_unique($targetPrincipals, SORT_STRING));
}
+ /**
+ * @param string $cardUri
+ * @param string $cardData
+ * @param array $book
+ * @param int $calendarId
+ * @param string $type
+ */
+ private function updateCalendar($cardUri, $cardData, $book, $calendarId, $type) {
+ $objectUri = $book['uri'] . '-' . $cardUri . $type['postfix'] . '.ics';
+ $calendarData = $this->buildDateFromContact($cardData, $type['field'], $type['symbol']);
+ $existing = $this->calDavBackEnd->getCalendarObject($calendarId, $objectUri);
+ if (is_null($calendarData)) {
+ if (!is_null($existing)) {
+ $this->calDavBackEnd->deleteCalendarObject($calendarId, $objectUri);
+ }
+ } else {
+ if (is_null($existing)) {
+ $this->calDavBackEnd->createCalendarObject($calendarId, $objectUri, $calendarData->serialize());
+ } else {
+ if ($this->birthdayEvenChanged($existing['calendardata'], $calendarData)) {
+ $this->calDavBackEnd->updateCalendarObject($calendarId, $objectUri, $calendarData->serialize());
+ }
+ }
+ }
+ }
+
}
diff --git a/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php b/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php
index 7c772184fef..40a6330ddb8 100644
--- a/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php
+++ b/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php
@@ -41,16 +41,16 @@ class BirthdayServiceTest extends TestCase {
/** @var CardDavBackend | \PHPUnit_Framework_MockObject_MockObject */
private $cardDav;
/** @var GroupPrincipalBackend | \PHPUnit_Framework_MockObject_MockObject */
- private $groupPrincialBackend;
+ private $groupPrincipalBackend;
public function setUp() {
parent::setUp();
- $this->calDav = $this->getMockBuilder('OCA\DAV\CalDAV\CalDavBackend')->disableOriginalConstructor()->getMock();
- $this->cardDav = $this->getMockBuilder('OCA\DAV\CardDAV\CardDavBackend')->disableOriginalConstructor()->getMock();
- $this->groupPrincialBackend = $this->getMockBuilder('OCA\DAV\DAV\GroupPrincipalBackend')->disableOriginalConstructor()->getMock();
+ $this->calDav = $this->getMockBuilder(CalDavBackend::class)->disableOriginalConstructor()->getMock();
+ $this->cardDav = $this->getMockBuilder(CardDavBackend::class)->disableOriginalConstructor()->getMock();
+ $this->groupPrincipalBackend = $this->getMockBuilder(GroupPrincipalBackend::class)->disableOriginalConstructor()->getMock();
- $this->service = new BirthdayService($this->calDav, $this->cardDav, $this->groupPrincialBackend);
+ $this->service = new BirthdayService($this->calDav, $this->cardDav, $this->groupPrincipalBackend);
}
/**
@@ -59,7 +59,7 @@ class BirthdayServiceTest extends TestCase {
* @param string | null $data
*/
public function testBuildBirthdayFromContact($nullExpected, $data) {
- $cal = $this->service->buildBirthdayFromContact($data);
+ $cal = $this->service->buildDateFromContact($data, 'BDAY', '*');
if ($nullExpected) {
$this->assertNull($cal);
} else {
@@ -83,7 +83,9 @@ class BirthdayServiceTest extends TestCase {
->willReturn([
'id' => 1234
]);
- $this->calDav->expects($this->once())->method('deleteCalendarObject')->with(1234, 'default-gump.vcf.ics');
+ $this->calDav->expects($this->at(1))->method('deleteCalendarObject')->with(1234, 'default-gump.vcf.ics');
+ $this->calDav->expects($this->at(2))->method('deleteCalendarObject')->with(1234, 'default-gump.vcf-death.ics');
+ $this->calDav->expects($this->at(3))->method('deleteCalendarObject')->with(1234, 'default-gump.vcf-anniversary.ics');
$this->cardDav->expects($this->once())->method('getShares')->willReturn([]);
$this->service->onCardDeleted(666, 'gump.vcf');
@@ -107,26 +109,37 @@ class BirthdayServiceTest extends TestCase {
$this->cardDav->expects($this->once())->method('getShares')->willReturn([]);
/** @var BirthdayService | \PHPUnit_Framework_MockObject_MockObject $service */
- $service = $this->getMockBuilder('\OCA\DAV\CalDAV\BirthdayService')
- ->setMethods(['buildBirthdayFromContact', 'birthdayEvenChanged'])
- ->setConstructorArgs([$this->calDav, $this->cardDav, $this->groupPrincialBackend])
+ $service = $this->getMockBuilder(BirthdayService::class)
+ ->setMethods(['buildDateFromContact', 'birthdayEvenChanged'])
+ ->setConstructorArgs([$this->calDav, $this->cardDav, $this->groupPrincipalBackend])
->getMock();
if ($expectedOp === 'delete') {
- $this->calDav->expects($this->once())->method('getCalendarObject')->willReturn('');
- $service->expects($this->once())->method('buildBirthdayFromContact')->willReturn(null);
- $this->calDav->expects($this->once())->method('deleteCalendarObject')->with(1234, 'default-gump.vcf.ics');
+ $this->calDav->expects($this->exactly(3))->method('getCalendarObject')->willReturn('');
+ $service->expects($this->exactly(3))->method('buildDateFromContact')->willReturn(null);
+ $this->calDav->expects($this->exactly(3))->method('deleteCalendarObject')->withConsecutive(
+ [1234, 'default-gump.vcf.ics'],
+ [1234, 'default-gump.vcf-death.ics'],
+ [1234, 'default-gump.vcf-anniversary.ics']
+ );
}
if ($expectedOp === 'create') {
- $service->expects($this->once())->method('buildBirthdayFromContact')->willReturn(new VCalendar());
- $this->calDav->expects($this->once())->method('createCalendarObject')->with(1234, 'default-gump.vcf.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n");
+ $service->expects($this->exactly(3))->method('buildDateFromContact')->willReturn(new VCalendar());
+ $this->calDav->expects($this->exactly(3))->method('createCalendarObject')->withConsecutive(
+ [1234, 'default-gump.vcf.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"],
+ [1234, 'default-gump.vcf-death.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"],
+ [1234, 'default-gump.vcf-anniversary.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"]
+ );
}
if ($expectedOp === 'update') {
- $service->expects($this->once())->method('buildBirthdayFromContact')->willReturn(new VCalendar());
- $service->expects($this->once())->method('birthdayEvenChanged')->willReturn(true);
- $this->calDav->expects($this->once())->method('getCalendarObject')->willReturn([
- 'calendardata' => '']);
- $this->calDav->expects($this->once())->method('updateCalendarObject')->with(1234, 'default-gump.vcf.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n");
+ $service->expects($this->exactly(3))->method('buildDateFromContact')->willReturn(new VCalendar());
+ $service->expects($this->exactly(3))->method('birthdayEvenChanged')->willReturn(true);
+ $this->calDav->expects($this->exactly(3))->method('getCalendarObject')->willReturn(['calendardata' => '']);
+ $this->calDav->expects($this->exactly(3))->method('updateCalendarObject')->withConsecutive(
+ [1234, 'default-gump.vcf.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"],
+ [1234, 'default-gump.vcf-death.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"],
+ [1234, 'default-gump.vcf-anniversary.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"]
+ );
}
$service->onCardChanged(666, 'gump.vcf', '');
@@ -162,7 +175,7 @@ class BirthdayServiceTest extends TestCase {
'{http://owncloud.org/ns}principal' => 'principals/groups/users'
],
]);
- $this->groupPrincialBackend->expects($this->once())->method('getGroupMemberSet')
+ $this->groupPrincipalBackend->expects($this->once())->method('getGroupMemberSet')
->willReturn([
[
'uri' => 'principals/users/user01',
diff --git a/apps/encryption/tests/MigrationTest.php b/apps/encryption/tests/MigrationTest.php
index 868a1ad3922..595d7f12067 100644
--- a/apps/encryption/tests/MigrationTest.php
+++ b/apps/encryption/tests/MigrationTest.php
@@ -343,6 +343,10 @@ class MigrationTest extends \Test\TestCase {
unset($cache['files_encryption']);
$this->invokePrivate(\OC::$server->getAppConfig(), 'cache', [$cache]);
+ $cache = $this->invokePrivate($config, 'userCache');
+ unset($cache[self::TEST_ENCRYPTION_MIGRATION_USER1]);
+ $this->invokePrivate(\OC::$server->getAppConfig(), 'userCache', [$cache]);
+
// delete default values set by the encryption app during initialization
/** @var \OCP\IDBConnection $connection */
diff --git a/apps/files/css/mobile.css b/apps/files/css/mobile.css
index 10a9a57332e..8e2ef23221d 100644
--- a/apps/files/css/mobile.css
+++ b/apps/files/css/mobile.css
@@ -61,6 +61,11 @@ table td.filename .nametext .innernametext {
max-width: 50%;
}
+/* ellipsis on user names in share sidebar */
+#shareWithList .username {
+ max-width: 80px !important;
+}
+
/* proper notification area for multi line messages */
#notification-container {
display: -webkit-box;
@@ -82,4 +87,4 @@ table td.filename .nametext .innernametext {
display: block !important;
}
-} \ No newline at end of file
+}
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 98d0f132ad6..896af1dd6e5 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -2426,8 +2426,9 @@
$('#searchresults').addClass('filter-empty');
$('#searchresults .emptycontent').addClass('emptycontent-search');
if ( $('#searchresults').length === 0 || $('#searchresults').hasClass('hidden') ) {
+ var error = t('files', "No search results in other folders for '{tag}{filter}{endtag}'", {filter:this._filter}, null, {'escape': false});
this.$el.find('.nofilterresults').removeClass('hidden').
- find('p').text(t('files', "No entries in this folder match '{filter}'", {filter:this._filter}, null, {'escape': false}));
+ find('p').html(error.replace('{tag}', '<strong>').replace('{endtag}', '</strong>'));
}
} else {
$('#searchresults').removeClass('filter-empty');
diff --git a/apps/files/js/search.js b/apps/files/js/search.js
index 625e4b13f4b..fa79d695165 100644
--- a/apps/files/js/search.js
+++ b/apps/files/js/search.js
@@ -63,7 +63,7 @@
show size and last modified date on the right */
this.updateLegacyMimetype(result);
- var $pathDiv = $('<div class="path"></div>').text(result.path);
+ var $pathDiv = $('<div class="path"></div>').text(result.path.substr(1));
$row.find('td.info div.name').after($pathDiv).text(result.name);
$row.find('td.result a').attr('href', result.link);
@@ -80,7 +80,7 @@
show size and last modified date on the right */
this.updateLegacyMimetype(result);
- var $pathDiv = $('<div class="path"></div>').text(result.path);
+ var $pathDiv = $('<div class="path"></div>').text(result.path.substr(1));
$row.find('td.info div.name').after($pathDiv).text(result.name);
$row.find('td.result a').attr('href', result.link);
diff --git a/apps/files_sharing/templates/list.php b/apps/files_sharing/templates/list.php
index f59cb7653d8..785b2bc72a4 100644
--- a/apps/files_sharing/templates/list.php
+++ b/apps/files_sharing/templates/list.php
@@ -8,7 +8,6 @@
<div class="nofilterresults hidden">
<div class="icon-search"></div>
<h2><?php p($l->t('No entries found in this folder')); ?></h2>
- <p></p>
</div>
<table id="filestable">
diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php
index 40bae8d7b41..e7facd80ae0 100644
--- a/apps/user_ldap/lib/Access.php
+++ b/apps/user_ldap/lib/Access.php
@@ -184,14 +184,14 @@ class Access extends LDAPUtility implements IUserTools {
$dn = $this->helper->DNasBaseParameter($dn);
$rr = @$this->ldap->read($cr, $dn, $filter, array($attr));
if(!$this->ldap->isResource($rr)) {
- if(!empty($attr)) {
+ if ($attr !== '') {
//do not throw this message on userExists check, irritates
\OCP\Util::writeLog('user_ldap', 'readAttribute failed for DN '.$dn, \OCP\Util::DEBUG);
}
//in case an error occurs , e.g. object does not exist
return false;
}
- if (empty($attr) && ($filter === 'objectclass=*' || $this->ldap->countEntries($cr, $rr) === 1)) {
+ if ($attr === '' && ($filter === 'objectclass=*' || $this->ldap->countEntries($cr, $rr) === 1)) {
\OCP\Util::writeLog('user_ldap', 'readAttribute: '.$dn.' found', \OCP\Util::DEBUG);
return array();
}
@@ -422,8 +422,8 @@ class Access extends LDAPUtility implements IUserTools {
}
if($isUser) {
- $usernameAttribute = $this->connection->ldapExpertUsernameAttr;
- if(!empty($usernameAttribute)) {
+ $usernameAttribute = strval($this->connection->ldapExpertUsernameAttr);
+ if ($usernameAttribute !== '') {
$username = $this->readAttribute($fdn, $usernameAttribute);
$username = $username[0];
} else {
@@ -1128,7 +1128,7 @@ class Access extends LDAPUtility implements IUserTools {
private function combineFilter($filters, $operator) {
$combinedFilter = '('.$operator;
foreach($filters as $filter) {
- if(!empty($filter) && $filter[0] !== '(') {
+ if ($filter !== '' && $filter[0] !== '(') {
$filter = '('.$filter.')';
}
$combinedFilter.=$filter;
@@ -1211,7 +1211,7 @@ class Access extends LDAPUtility implements IUserTools {
$search = $this->prepareSearchTerm($search);
if(!is_array($searchAttributes) || count($searchAttributes) === 0) {
- if(empty($fallbackAttribute)) {
+ if ($fallbackAttribute === '') {
return '';
}
$filter[] = $fallbackAttribute . '=' . $search;
@@ -1237,8 +1237,12 @@ class Access extends LDAPUtility implements IUserTools {
$allowEnum = $config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes');
- $result = empty($term) ? '*' :
- $allowEnum !== 'no' ? $term . '*' : $term;
+ $result = $term;
+ if ($term === '') {
+ $result = '*';
+ } else if ($allowEnum !== 'no') {
+ $result = $term . '*';
+ }
return $result;
}
@@ -1285,7 +1289,7 @@ class Access extends LDAPUtility implements IUserTools {
$filter = $this->connection->ldapUserFilter;
$base = $this->connection->ldapBaseUsers;
- if($this->connection->ldapUuidUserAttribute === 'auto' && empty($uuidOverride)) {
+ if ($this->connection->ldapUuidUserAttribute === 'auto' && $uuidOverride === '') {
// Sacrebleu! The UUID attribute is unknown :( We need first an
// existing DN to be able to reliably detect it.
$result = $this->search($filter, $base, ['dn'], 1);
@@ -1341,7 +1345,7 @@ class Access extends LDAPUtility implements IUserTools {
return true;
}
- if(!empty($uuidOverride) && !$force) {
+ if ($uuidOverride !== '' && !$force) {
$this->connection->$uuidAttr = $uuidOverride;
return true;
}
@@ -1384,7 +1388,7 @@ class Access extends LDAPUtility implements IUserTools {
if($this->detectUuidAttribute($dn, $isUser)) {
$uuid = $this->readAttribute($dn, $this->connection->$uuidAttr);
if( !is_array($uuid)
- && !empty($uuidOverride)
+ && $uuidOverride !== ''
&& $this->detectUuidAttribute($dn, $isUser, true)) {
$uuid = $this->readAttribute($dn,
$this->connection->$uuidAttr);
diff --git a/apps/user_ldap/lib/Configuration.php b/apps/user_ldap/lib/Configuration.php
index 54dfe6779ba..80b353360c3 100644
--- a/apps/user_ldap/lib/Configuration.php
+++ b/apps/user_ldap/lib/Configuration.php
@@ -161,7 +161,7 @@ class Configuration {
break;
case 'homeFolderNamingRule':
$trimmedVal = trim($val);
- if(!empty($trimmedVal) && strpos($val, 'attr:') === false) {
+ if ($trimmedVal !== '' && strpos($val, 'attr:') === false) {
$val = 'attr:'.$trimmedVal;
}
break;
@@ -309,7 +309,7 @@ class Configuration {
foreach($value as $key => $val) {
if(is_string($val)) {
$val = trim($val);
- if(!empty($val)) {
+ if ($val !== '') {
//accidental line breaks are not wanted and can cause
// odd behaviour. Thus, away with them.
$finalValue[] = $val;
diff --git a/apps/user_ldap/lib/Connection.php b/apps/user_ldap/lib/Connection.php
index 64c8b9675a3..6028486e8bb 100644
--- a/apps/user_ldap/lib/Connection.php
+++ b/apps/user_ldap/lib/Connection.php
@@ -137,7 +137,7 @@ class Connection extends LDAPUtility {
$this->configuration->$name = $value;
$after = $this->configuration->$name;
if($before !== $after) {
- if(!empty($this->configID)) {
+ if ($this->configID !== '') {
$this->configuration->saveConfiguration();
}
$this->validateConfiguration();
@@ -358,8 +358,8 @@ class Connection extends LDAPUtility {
}
}
- $backupPort = $this->configuration->ldapBackupPort;
- if(empty($backupPort)) {
+ $backupPort = intval($this->configuration->ldapBackupPort);
+ if ($backupPort <= 0) {
$this->configuration->backupPort = $this->configuration->ldapPort;
}
@@ -427,7 +427,10 @@ class Connection extends LDAPUtility {
//combinations
$agent = $this->configuration->ldapAgentName;
$pwd = $this->configuration->ldapAgentPassword;
- if((empty($agent) && !empty($pwd)) || (!empty($agent) && empty($pwd))) {
+ if (
+ ($agent === '' && $pwd !== '')
+ || ($agent !== '' && $pwd === '')
+ ) {
\OCP\Util::writeLog('user_ldap',
$errorStr.'either no password is given for the'.
'user agent or a password is given, but not an'.
@@ -568,7 +571,7 @@ class Connection extends LDAPUtility {
* @throws \OC\ServerNotAvailableException
*/
private function doConnect($host, $port) {
- if(empty($host)) {
+ if ($host === '') {
return false;
}
$this->ldapConnectionRes = $this->ldap->connect($host, $port);
diff --git a/apps/user_ldap/lib/Group_LDAP.php b/apps/user_ldap/lib/Group_LDAP.php
index 67caa415efa..49e5e724833 100644
--- a/apps/user_ldap/lib/Group_LDAP.php
+++ b/apps/user_ldap/lib/Group_LDAP.php
@@ -360,7 +360,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface {
$filterParts = [];
$filterParts[] = $this->access->getFilterForUserCount();
- if(!empty($search)) {
+ if ($search !== '') {
$filterParts[] = $this->access->getFilterPartForUserSearch($search);
}
$filterParts[] = 'primaryGroupID=' . $groupID;
@@ -658,7 +658,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface {
$groupUsers[] = $this->access->dn2username($ldap_users[0]['dn'][0]);
} else {
//we got DNs, check if we need to filter by search or we can give back all of them
- if(!empty($search)) {
+ if ($search !== '') {
if(!$this->access->readAttribute($member,
$this->access->connection->ldapUserDisplayName,
$this->access->getFilterPartForUserSearch($search))) {
@@ -714,7 +714,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface {
return false;
}
- if(empty($search)) {
+ if ($search === '') {
$groupUsers = count($members) + $primaryUserCount;
$this->access->connection->writeToCache($cacheKey, $groupUsers);
return $groupUsers;
@@ -826,9 +826,8 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface {
return array();
}
$search = $this->access->escapeFilterPart($search, true);
- $pagingSize = $this->access->connection->ldapPagingSize;
- if ((! $this->access->connection->hasPagedResultSupport)
- || empty($pagingSize)) {
+ $pagingSize = intval($this->access->connection->ldapPagingSize);
+ if (!$this->access->connection->hasPagedResultSupport || $pagingSize <= 0) {
return $this->getGroupsChunk($search, $limit, $offset);
}
$maxGroups = 100000; // limit max results (just for safety reasons)
diff --git a/apps/user_ldap/lib/User/User.php b/apps/user_ldap/lib/User/User.php
index b2fcac10641..e29b10616ca 100644
--- a/apps/user_ldap/lib/User/User.php
+++ b/apps/user_ldap/lib/User/User.php
@@ -183,13 +183,13 @@ class User {
$displayName = $displayName2 = '';
$attr = strtolower($this->connection->ldapUserDisplayName);
if(isset($ldapEntry[$attr])) {
- $displayName = $ldapEntry[$attr][0];
+ $displayName = strval($ldapEntry[$attr][0]);
}
$attr = strtolower($this->connection->ldapUserDisplayName2);
if(isset($ldapEntry[$attr])) {
- $displayName2 = $ldapEntry[$attr][0];
+ $displayName2 = strval($ldapEntry[$attr][0]);
}
- if(!empty($displayName)) {
+ if ($displayName !== '') {
$this->composeAndStoreDisplayName($displayName);
$this->access->cacheUserDisplayName(
$this->getUsername(),
@@ -261,10 +261,10 @@ class User {
* @throws \Exception
*/
public function getHomePath($valueFromLDAP = null) {
- $path = $valueFromLDAP;
+ $path = strval($valueFromLDAP);
$attr = null;
- if( is_null($path)
+ if (is_null($valueFromLDAP)
&& strpos($this->access->connection->homeFolderNamingRule, 'attr:') === 0
&& $this->access->connection->homeFolderNamingRule !== 'attr:')
{
@@ -276,7 +276,7 @@ class User {
}
}
- if(!empty($path)) {
+ if ($path !== '') {
//if attribute's value is an absolute path take this, otherwise append it to data dir
//check for / at the beginning or pattern c:\ resp. c:/
if( '/' !== $path[0]
@@ -393,7 +393,8 @@ class User {
* @returns string the effective display name
*/
public function composeAndStoreDisplayName($displayName, $displayName2 = '') {
- if(!empty($displayName2)) {
+ $displayName2 = strval($displayName2);
+ if($displayName2 !== '') {
$displayName .= ' (' . $displayName2 . ')';
}
$this->store('displayName', $displayName);
@@ -432,20 +433,20 @@ class User {
if($this->wasRefreshed('email')) {
return;
}
- $email = $valueFromLDAP;
+ $email = strval($valueFromLDAP);
if(is_null($valueFromLDAP)) {
$emailAttribute = $this->connection->ldapEmailAttribute;
- if(!empty($emailAttribute)) {
+ if ($emailAttribute !== '') {
$aEmail = $this->access->readAttribute($this->dn, $emailAttribute);
if(is_array($aEmail) && (count($aEmail) > 0)) {
- $email = $aEmail[0];
+ $email = strval($aEmail[0]);
}
}
}
- if(!is_null($email)) {
+ if ($email !== '') {
$user = $this->userManager->get($this->uid);
if (!is_null($user)) {
- $currentEmail = $user->getEMailAddress();
+ $currentEmail = strval($user->getEMailAddress());
if ($currentEmail !== $email) {
$user->setEMailAddress($email);
}
@@ -470,7 +471,7 @@ class User {
if(is_null($valueFromLDAP)) {
$quotaAttribute = $this->connection->ldapQuotaAttribute;
- if(!empty($quotaAttribute)) {
+ if ($quotaAttribute !== '') {
$aQuota = $this->access->readAttribute($this->dn, $quotaAttribute);
if($aQuota && (count($aQuota) > 0)) {
$quota = $aQuota[0];
diff --git a/apps/user_ldap/lib/User_LDAP.php b/apps/user_ldap/lib/User_LDAP.php
index e7658149302..9f2468bcc85 100644
--- a/apps/user_ldap/lib/User_LDAP.php
+++ b/apps/user_ldap/lib/User_LDAP.php
@@ -385,7 +385,7 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
//Check whether the display name is configured to have a 2nd feature
$additionalAttribute = $this->access->connection->ldapUserDisplayName2;
$displayName2 = '';
- if(!empty($additionalAttribute)) {
+ if ($additionalAttribute !== '') {
$displayName2 = $this->access->readAttribute(
$this->access->username2dn($uid),
$additionalAttribute);
@@ -398,8 +398,8 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
if($displayName && (count($displayName) > 0)) {
$displayName = $displayName[0];
- if(is_array($displayName2) && (count($displayName2) > 0)) {
- $displayName2 = $displayName2[0];
+ if (is_array($displayName2)){
+ $displayName2 = count($displayName2) > 0 ? $displayName2[0] : '';
}
$user = $this->access->userManager->get($uid);
diff --git a/apps/user_ldap/lib/Wizard.php b/apps/user_ldap/lib/Wizard.php
index cdc98c72cde..2c388b1803e 100644
--- a/apps/user_ldap/lib/Wizard.php
+++ b/apps/user_ldap/lib/Wizard.php
@@ -220,7 +220,7 @@ class Wizard extends LDAPUtility {
}
$attr = $this->configuration->ldapUserDisplayName;
- if($attr !== 'displayName' && !empty($attr)) {
+ if ($attr !== '' && $attr !== 'displayName') {
// most likely not the default value with upper case N,
// verify it still produces a result
$count = intval($this->countUsersWithAttribute($attr, true));
@@ -262,7 +262,7 @@ class Wizard extends LDAPUtility {
}
$attr = $this->configuration->ldapEmailAttribute;
- if(!empty($attr)) {
+ if ($attr !== '') {
$count = intval($this->countUsersWithAttribute($attr, true));
if($count > 0) {
return false;
@@ -552,7 +552,7 @@ class Wizard extends LDAPUtility {
}
//make sure the use display name is set
$displayName = $this->configuration->ldapGroupDisplayName;
- if(empty($displayName)) {
+ if ($displayName === '') {
$d = $this->configuration->getDefaults();
$this->applyFind('ldap_group_display_name',
$d['ldap_group_display_name']);
@@ -576,7 +576,7 @@ class Wizard extends LDAPUtility {
}
//make sure the use display name is set
$displayName = $this->configuration->ldapUserDisplayName;
- if(empty($displayName)) {
+ if ($displayName === '') {
$d = $this->configuration->getDefaults();
$this->applyFind('ldap_display_name', $d['ldap_display_name']);
}
@@ -904,7 +904,7 @@ class Wizard extends LDAPUtility {
$er = $this->ldap->firstEntry($cr, $rr);
$attrs = $this->ldap->getAttributes($cr, $er);
$dn = $this->ldap->getDN($cr, $er);
- if(empty($dn)) {
+ if ($dn == false || $dn === '') {
continue;
}
$filterPart = '(memberof=' . $dn . ')';
@@ -923,7 +923,7 @@ class Wizard extends LDAPUtility {
if($parts > 1) {
$filter = '(&' . $filter . ')';
}
- if(empty($filter)) {
+ if ($filter === '') {
$filter = '(objectclass=*)';
}
break;
@@ -973,7 +973,7 @@ class Wizard extends LDAPUtility {
//fallback
$attr = 'cn';
}
- if(!empty($attr)) {
+ if ($attr !== '') {
$filterUsername = '(' . $attr . $loginpart . ')';
$parts++;
}
@@ -1098,8 +1098,10 @@ class Wizard extends LDAPUtility {
$agent = $this->configuration->ldapAgentName;
$pwd = $this->configuration->ldapAgentPassword;
- return ( (!empty($agent) && !empty($pwd))
- || (empty($agent) && empty($pwd)));
+ return
+ ($agent !== '' && $pwd !== '')
+ || ($agent === '' && $pwd === '')
+ ;
}
/**
@@ -1236,7 +1238,7 @@ class Wizard extends LDAPUtility {
if(is_array($setFeatures) && !empty($setFeatures)) {
//something is already configured? pre-select it.
$this->result->addChange($dbkey, $setFeatures);
- } else if($po && !empty($maxEntryObjC)) {
+ } else if ($po && $maxEntryObjC !== '') {
//pre-select objectclass with most result entries
$maxEntryObjC = str_replace($p, '', $maxEntryObjC);
$this->applyFind($dbkey, $maxEntryObjC);
diff --git a/apps/user_ldap/tests/AccessTest.php b/apps/user_ldap/tests/AccessTest.php
index eb660afee70..d7d04e31d08 100644
--- a/apps/user_ldap/tests/AccessTest.php
+++ b/apps/user_ldap/tests/AccessTest.php
@@ -27,9 +27,12 @@
namespace OCA\User_LDAP\Tests;
use OCA\User_LDAP\Access;
+use OCA\User_LDAP\Connection;
use OCA\User_LDAP\FilesystemHelper;
+use OCA\User_LDAP\Helper;
use OCA\User_LDAP\ILDAPWrapper;
use OCA\User_LDAP\LogWrapper;
+use OCA\User_LDAP\User\Manager;
use OCP\IAvatarManager;
use OCP\IConfig;
use OCP\IDBConnection;
@@ -45,29 +48,21 @@ use OCP\IUserManager;
*/
class AccessTest extends \Test\TestCase {
private function getConnectorAndLdapMock() {
- static $conMethods;
- static $accMethods;
- static $umMethods;
-
- if(is_null($conMethods) || is_null($accMethods)) {
- $conMethods = get_class_methods('\OCA\User_LDAP\Connection');
- $accMethods = get_class_methods('\OCA\User_LDAP\Access');
- $umMethods = get_class_methods('\OCA\User_LDAP\User\Manager');
- }
$lw = $this->createMock(ILDAPWrapper::class);
- $connector = $this->getMock('\OCA\User_LDAP\Connection',
- $conMethods,
- array($lw, null, null));
- $um = $this->getMock('\OCA\User_LDAP\User\Manager',
- $umMethods, array(
+ $connector = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$lw, null, null])
+ ->getMock();
+ $um = $this->getMockBuilder(Manager::class)
+ ->setConstructorArgs([
$this->createMock(IConfig::class),
$this->createMock(FilesystemHelper::class),
$this->createMock(LogWrapper::class),
$this->createMock(IAvatarManager::class),
$this->createMock(Image::class),
$this->createMock(IDBConnection::class),
- $this->createMock(IUserManager::class)));
- $helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig());
+ $this->createMock(IUserManager::class)])
+ ->getMock();
+ $helper = new Helper(\OC::$server->getConfig());
return array($lw, $connector, $um, $helper);
}
diff --git a/apps/user_ldap/tests/ConnectionTest.php b/apps/user_ldap/tests/ConnectionTest.php
index fcff65efb33..e013773b7d9 100644
--- a/apps/user_ldap/tests/ConnectionTest.php
+++ b/apps/user_ldap/tests/ConnectionTest.php
@@ -47,9 +47,9 @@ class ConnectionTest extends \Test\TestCase {
$this->ldap = $this->createMock(ILDAPWrapper::class);
// we use a mock here to replace the cache mechanism, due to missing DI in LDAP backend.
$this->connection = $this->getMockBuilder('OCA\User_LDAP\Connection')
- ->setMethods(['getFromCache', 'writeToCache'])
- ->setConstructorArgs([$this->ldap, '', null])
- ->getMock();
+ ->setMethods(['getFromCache', 'writeToCache'])
+ ->setConstructorArgs([$this->ldap, '', null])
+ ->getMock();
$this->ldap->expects($this->any())
->method('areLDAPFunctionsAvailable')
diff --git a/apps/user_ldap/tests/Group_LDAPTest.php b/apps/user_ldap/tests/Group_LDAPTest.php
index 9bda3b8ceb5..906db6bb17b 100644
--- a/apps/user_ldap/tests/Group_LDAPTest.php
+++ b/apps/user_ldap/tests/Group_LDAPTest.php
@@ -48,16 +48,18 @@ class Group_LDAPTest extends \Test\TestCase {
$accMethods = get_class_methods('\OCA\User_LDAP\Access');
}
$lw = $this->createMock(ILDAPWrapper::class);
- $connector = $this->getMock('\OCA\User_LDAP\Connection',
- $conMethods,
- array($lw, null, null));
+ $connector = $this->getMockBuilder('\OCA\User_LDAP\Connection')
+ ->setMethods($conMethods)
+ ->setConstructorArgs([$lw, null, null])
+ ->getMock();
$um = $this->getMockBuilder('\OCA\User_LDAP\User\Manager')
->disableOriginalConstructor()
->getMock();
$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig());
- $access = $this->getMock('\OCA\User_LDAP\Access',
- $accMethods,
- array($connector, $lw, $um, $helper));
+ $access = $this->getMockBuilder('\OCA\User_LDAP\Access')
+ ->setMethods($accMethods)
+ ->setConstructorArgs([$connector, $lw, $um, $helper])
+ ->getMock();
$access->expects($this->any())
->method('getConnection')
diff --git a/apps/user_ldap/tests/User/UserTest.php b/apps/user_ldap/tests/User/UserTest.php
index 121b1102653..c261a2abaa2 100644
--- a/apps/user_ldap/tests/User/UserTest.php
+++ b/apps/user_ldap/tests/User/UserTest.php
@@ -77,13 +77,19 @@ class UserTest extends \Test\TestCase {
if (is_null($userMgr)) {
$userMgr = $this->createMock(IUserManager::class);
}
- $um = $this->getMock('\OCA\User_LDAP\User\Manager',
- $umMethods, array($cfMock, $fsMock, $logMock, $avaMgr, $im, $dbc, $userMgr));
- $connector = $this->getMock('\OCA\User_LDAP\Connection',
- $conMethods, array($lw, null, null));
+ $um = $this->getMockBuilder('\OCA\User_LDAP\User\Manager')
+ ->setMethods($umMethods)
+ ->setConstructorArgs([$cfMock, $fsMock, $logMock, $avaMgr, $im, $dbc, $userMgr])
+ ->getMock();
$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig());
- $access = $this->getMock('\OCA\User_LDAP\Access',
- $accMethods, array($connector, $lw, $um, $helper));
+ $connector = $this->getMockBuilder('\OCA\User_LDAP\Connection')
+ ->setMethods($conMethods)
+ ->setConstructorArgs([$lw, null, null])
+ ->getMock();
+ $access = $this->getMockBuilder('\OCA\User_LDAP\Access')
+ ->setMethods($accMethods)
+ ->setConstructorArgs([$connector, $lw, $um, $helper])
+ ->getMock();
return array($access, $connector);
}
diff --git a/apps/user_ldap/tests/WizardTest.php b/apps/user_ldap/tests/WizardTest.php
index af3b692c7dd..545d112338b 100644
--- a/apps/user_ldap/tests/WizardTest.php
+++ b/apps/user_ldap/tests/WizardTest.php
@@ -61,18 +61,24 @@ class WizardTest extends \Test\TestCase {
$accMethods = get_class_methods('\OCA\User_LDAP\Access');
}
$lw = $this->createMock(ILDAPWrapper::class);
- $conf = $this->getMock('\OCA\User_LDAP\Configuration',
- $confMethods,
- array($lw, null, null));
-
- $connector = $this->getMock('\OCA\User_LDAP\Connection',
- $connMethods, array($lw, null, null));
+ $conf = $this->getMockBuilder('\OCA\User_LDAP\Configuration')
+ ->setMethods($confMethods)
+ ->setConstructorArgs([$lw, null, null])
+ ->getMock();
+
+ $connector = $this->getMockBuilder('\OCA\User_LDAP\Connection')
+ ->setMethods($connMethods)
+ ->setConstructorArgs([$lw, null, null])
+ ->getMock();
+
$um = $this->getMockBuilder('\OCA\User_LDAP\User\Manager')
- ->disableOriginalConstructor()
- ->getMock();
+ ->disableOriginalConstructor()
+ ->getMock();
$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig());
- $access = $this->getMock('\OCA\User_LDAP\Access',
- $accMethods, array($connector, $lw, $um, $helper));
+ $access = $this->getMockBuilder('\OCA\User_LDAP\Access')
+ ->setMethods($accMethods)
+ ->setConstructorArgs([$connector, $lw, $um, $helper])
+ ->getMock();
return array(new Wizard($conf, $lw, $access), $conf, $lw, $access);
}
diff --git a/apps/workflowengine/lib/Manager.php b/apps/workflowengine/lib/Manager.php
index 9140ef73ea7..e93498b5075 100644
--- a/apps/workflowengine/lib/Manager.php
+++ b/apps/workflowengine/lib/Manager.php
@@ -300,7 +300,6 @@ class Manager implements IManager {
->where($query->expr()->in('id', $query->createNamedParameter($checkIds, IQueryBuilder::PARAM_INT_ARRAY)));
$result = $query->execute();
- $checks = [];
while ($row = $result->fetch()) {
$this->checks[(int) $row['id']] = $row;
$checks[(int) $row['id']] = $row;
diff --git a/apps/workflowengine/tests/ManagerTest.php b/apps/workflowengine/tests/ManagerTest.php
new file mode 100644
index 00000000000..9136bf0e7cd
--- /dev/null
+++ b/apps/workflowengine/tests/ManagerTest.php
@@ -0,0 +1,94 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\WorkflowEngine\Tests;
+
+
+use OCA\WorkflowEngine\Manager;
+use OCP\IDBConnection;
+use OCP\IL10N;
+use OCP\IServerContainer;
+use Test\TestCase;
+
+/**
+ * Class ManagerTest
+ *
+ * @package OCA\WorkflowEngine\Tests
+ * @group DB
+ */
+class ManagerTest extends TestCase {
+
+ /** @var Manager */
+ protected $manager;
+ /** @var IDBConnection */
+ protected $db;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->db = \OC::$server->getDatabaseConnection();
+ $container = $this->createMock(IServerContainer::class);
+ $l = $this->createMock(IL10N::class);
+ $l->method('t')
+ ->will($this->returnCallback(function($text, $parameters = []) {
+ return vsprintf($text, $parameters);
+ }));
+
+ $this->manager = new Manager(
+ \OC::$server->getDatabaseConnection(),
+ $container,
+ $l
+ );
+ $this->clearChecks();
+ }
+
+ protected function tearDown() {
+ $this->clearChecks();
+ parent::tearDown();
+ }
+
+ public function clearChecks() {
+ $query = $this->db->getQueryBuilder();
+ $query->delete('flow_checks')
+ ->execute();
+ }
+
+ public function testChecks() {
+ $check1 = $this->invokePrivate($this->manager, 'addCheck', ['Test', 'equal', 1]);
+ $check2 = $this->invokePrivate($this->manager, 'addCheck', ['Test', '!equal', 2]);
+
+ $data = $this->manager->getChecks([$check1]);
+ $this->assertArrayHasKey($check1, $data);
+ $this->assertArrayNotHasKey($check2, $data);
+
+ $data = $this->manager->getChecks([$check1, $check2]);
+ $this->assertArrayHasKey($check1, $data);
+ $this->assertArrayHasKey($check2, $data);
+
+ $data = $this->manager->getChecks([$check2, $check1]);
+ $this->assertArrayHasKey($check1, $data);
+ $this->assertArrayHasKey($check2, $data);
+
+ $data = $this->manager->getChecks([$check2]);
+ $this->assertArrayNotHasKey($check1, $data);
+ $this->assertArrayHasKey($check2, $data);
+ }
+}