fix merge conflicts

This commit is contained in:
Georg Ehrke 2012-06-30 12:44:45 +02:00
commit 6e6f90a8a2
30 changed files with 220 additions and 88 deletions

View File

@ -9,12 +9,17 @@ OC::$CLASSPATH['OC_Calendar_Repeat'] = 'apps/calendar/lib/repeat.php';
OC::$CLASSPATH['OC_Calendar_Share'] = 'apps/calendar/lib/share.php'; OC::$CLASSPATH['OC_Calendar_Share'] = 'apps/calendar/lib/share.php';
OC::$CLASSPATH['OC_Search_Provider_Calendar'] = 'apps/calendar/lib/search.php'; OC::$CLASSPATH['OC_Search_Provider_Calendar'] = 'apps/calendar/lib/search.php';
OC::$CLASSPATH['OC_Calendar_Export'] = 'apps/calendar/lib/export.php'; OC::$CLASSPATH['OC_Calendar_Export'] = 'apps/calendar/lib/export.php';
//General Hooks
OCP\Util::connectHook('OC_User', 'post_deleteUser', 'OC_Calendar_Hooks', 'deleteUser'); OCP\Util::connectHook('OC_User', 'post_deleteUser', 'OC_Calendar_Hooks', 'deleteUser');
//Repeating Events Hooks
OCP\Util::connectHook('OC_Calendar', 'addEvent', 'OC_Calendar_Repeat', 'generate'); OCP\Util::connectHook('OC_Calendar', 'addEvent', 'OC_Calendar_Repeat', 'generate');
OCP\Util::connectHook('OC_Calendar', 'editEvent', 'OC_Calendar_Repeat', 'update'); OCP\Util::connectHook('OC_Calendar', 'editEvent', 'OC_Calendar_Repeat', 'update');
OCP\Util::connectHook('OC_Calendar', 'deleteEvent', 'OC_Calendar_Repeat', 'clean'); OCP\Util::connectHook('OC_Calendar', 'deleteEvent', 'OC_Calendar_Repeat', 'clean');
OCP\Util::connectHook('OC_Calendar', 'moveEvent', 'OC_Calendar_Repeat', 'update'); OCP\Util::connectHook('OC_Calendar', 'moveEvent', 'OC_Calendar_Repeat', 'update');
OCP\Util::connectHook('OC_Calendar', 'deleteCalendar', 'OC_Calendar_Repeat', 'cleanCalendar'); OCP\Util::connectHook('OC_Calendar', 'deleteCalendar', 'OC_Calendar_Repeat', 'cleanCalendar');
//Sharing Hooks
OCP\Util::connectHook('OC_Calendar', 'deleteEvent', 'OC_Calendar_Share', 'post_eventdelete');
OCP\Util::connectHook('OC_Calendar', 'deleteCalendar', 'OC_Calendar_Share', 'post_caldelete');
OCP\Util::addscript('calendar','loader'); OCP\Util::addscript('calendar','loader');
OCP\Util::addscript("3rdparty", "chosen/chosen.jquery.min"); OCP\Util::addscript("3rdparty", "chosen/chosen.jquery.min");
OCP\Util::addStyle("3rdparty", "chosen/chosen"); OCP\Util::addStyle("3rdparty", "chosen/chosen");

View File

@ -44,7 +44,7 @@ Calendar_Import={
$('#newcalendar').attr('readonly', 'readonly'); $('#newcalendar').attr('readonly', 'readonly');
$('#calendar').attr('disabled', 'disabled'); $('#calendar').attr('disabled', 'disabled');
var progresskey = $('#progresskey').val(); var progresskey = $('#progresskey').val();
$.post(OC.filePath('calendar', 'ajax/import', 'import.php') + '?progresskey='+progresskey, {method: String (method), calname: String (calname), path: String (path), file: String (filename), id: String (calid)}, function(data){ $.post(OC.filePath('calendar', 'ajax/import', 'import.php'), {progresskey: progresskey, method: String (method), calname: String (calname), path: String (path), file: String (filename), id: String (calid)}, function(data){
if(data.status == 'success'){ if(data.status == 'success'){
$('#progressbar').progressbar('option', 'value', 100); $('#progressbar').progressbar('option', 'value', 100);
$('#import_done').css('display', 'block'); $('#import_done').css('display', 'block');

View File

@ -368,12 +368,14 @@ class OC_Calendar_App{
* @return (array) $output - readable output * @return (array) $output - readable output
*/ */
public static function generateEventOutput($event, $start, $end){ public static function generateEventOutput($event, $start, $end){
if(isset($event['calendardata'])){ if(!isset($event['calendardata']) && !isset($event['vevent'])){
$object = OC_VObject::parse($event['calendardata']); return false;
$vevent = $object->VEVENT;
}else{
$vevent = $event['vevent'];
} }
if(!isset($event['calendardata']) && isset($event['vevent'])){
$event['calendardata'] = "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:ownCloud's Internal iCal System\n" . $event['vevent']->serialize() . "END:VCALENDAR";
}
$object = OC_VObject::parse($event['calendardata']);
$vevent = $object->VEVENT;
$return = array(); $return = array();
$id = $event['id']; $id = $event['id'];
$allday = ($vevent->DTSTART->getDateType() == Sabre_VObject_Element_DateTime::DATE)?true:false; $allday = ($vevent->DTSTART->getDateType() == Sabre_VObject_Element_DateTime::DATE)?true:false;
@ -404,7 +406,7 @@ class OC_Calendar_App{
$return[] = array_merge($staticoutput, $dynamicoutput); $return[] = array_merge($staticoutput, $dynamicoutput);
} }
}else{ }else{
if(OC_Calendar_Object::isrepeating($id)){ if(OC_Calendar_Object::isrepeating($id) || $event['repeating'] == 1){
$object->expand($start, $end); $object->expand($start, $end);
} }
foreach($object->getComponents() as $singleevent){ foreach($object->getComponents() as $singleevent){
@ -412,7 +414,7 @@ class OC_Calendar_App{
continue; continue;
} }
$dynamicoutput = OC_Calendar_Object::generateStartEndDate($singleevent->DTSTART, OC_Calendar_Object::getDTEndFromVEvent($singleevent), $allday, self::$tz); $dynamicoutput = OC_Calendar_Object::generateStartEndDate($singleevent->DTSTART, OC_Calendar_Object::getDTEndFromVEvent($singleevent), $allday, self::$tz);
$return[] = array_merge($staticoutput, $dynamicoutput); $return[] = array_merge($staticoutput, $dynamicoutput);
} }
} }
return $return; return $return;

View File

@ -258,7 +258,7 @@ class OC_Calendar_Share{
} }
/* /*
* @brief delete all shared calendars / events after a user was deleted * @brief deletes all shared calendars / events after a user was deleted
* @param (string) $userid * @param (string) $userid
* @return (bool) * @return (bool)
*/ */
@ -273,4 +273,26 @@ class OC_Calendar_Share{
$stmt->execute(array($userid)); $stmt->execute(array($userid));
return true; return true;
} }
/*
* @brief deletes all shared events of a calendar
* @param integer $calid
* @return boolean
*/
public static function post_caldelete($calid){
$stmt = OCP\DB::prepare('DELETE FROM *PREFIX*calendar_share_calendar WHERE calendarid = ?');
$stmt->execute(array($calid));
return true;
}
/*
* @brief deletes all shares of an event
* @param integer $eventid
* @return boolean
*/
public static function post_eventdelete($eventid){
$stmt = OCP\DB::prepare('DELETE FROM *PREFIX*calendar_share_event WHERE eventid = ?');
$stmt->execute(array($eventid));
return true;
}
} }

View File

@ -1621,19 +1621,21 @@ Contacts={
var contactlist = $('#contacts ul[data-id="'+b+'"]'); var contactlist = $('#contacts ul[data-id="'+b+'"]');
for(var c in book.contacts) { for(var c in book.contacts) {
if(book.contacts[c].id == undefined) { continue; } if(book.contacts[c].id == undefined) { continue; }
var contact = Contacts.UI.Card.createEntry(book.contacts[c]); if($('#contacts li[data-id="'+book.contacts[c]['id']+'"][data-id="'+book.contacts[c]['bookid']+'"]').length == 0) {
if(c == self.batchnum-5) { var contact = Contacts.UI.Card.createEntry(book.contacts[c]);
contact.bind('inview', function(event, isInView, visiblePartX, visiblePartY) { if(c == self.batchnum-5) {
$(this).unbind(event); contact.bind('inview', function(event, isInView, visiblePartX, visiblePartY) {
var bookid = $(this).data('bookid'); $(this).unbind(event);
var numsiblings = $('.contacts li[data-bookid="'+bookid+'"]').length; var bookid = $(this).data('bookid');
if (isInView && numsiblings >= self.batchnum) { var numsiblings = $('.contacts li[data-bookid="'+bookid+'"]').length;
console.log('This would be a good time to load more contacts.'); if (isInView && numsiblings >= self.batchnum) {
Contacts.UI.Contacts.update(id, bookid, $('#contacts li[data-bookid="'+bookid+'"]').length); console.log('This would be a good time to load more contacts.');
} Contacts.UI.Contacts.update(id, bookid, $('#contacts li[data-bookid="'+bookid+'"]').length);
}); }
});
}
contactlist.append(contact);
} }
contactlist.append(contact);
} }
}); });
if($('#contacts h3').length > 1) { if($('#contacts h3').length > 1) {

View File

@ -90,9 +90,10 @@ class OC_Contacts_Hooks{
if ($birthday) { if ($birthday) {
$date = new DateTime($birthday); $date = new DateTime($birthday);
$vevent = new OC_VObject('VEVENT'); $vevent = new OC_VObject('VEVENT');
$vevent->setDateTime('LAST-MODIFIED', new DateTime($vcard->REV)); //$vevent->setDateTime('LAST-MODIFIED', new DateTime($vcard->REV));
$vevent->setDateTime('DTSTART', $date, Sabre_VObject_Element_DateTime::DATE); $vevent->setDateTime('DTSTART', $date, Sabre_VObject_Element_DateTime::DATE);
$vevent->setString('DURATION', 'P1D'); $vevent->setString('DURATION', 'P1D');
$vevent->setString('UID', substr(md5(rand().time()),0,10));
// DESCRIPTION? // DESCRIPTION?
$vevent->setString('RRULE', 'FREQ=YEARLY'); $vevent->setString('RRULE', 'FREQ=YEARLY');
$title = str_replace('{name}', $vcard->getAsString('FN'), OC_Contacts_App::$l10n->t('{name}\'s Birthday')); $title = str_replace('{name}', $vcard->getAsString('FN'), OC_Contacts_App::$l10n->t('{name}\'s Birthday'));
@ -101,6 +102,7 @@ class OC_Contacts_Hooks{
'vevent' => $vevent, 'vevent' => $vevent,
'repeating' => true, 'repeating' => true,
'summary' => $title, 'summary' => $title,
'calendardata' => "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:ownCloud Contacts " . OCP\App::getAppVersion('contacts') . "\n" . $vevent->serialize() . "END:VCALENDAR"
); );
} }
} }

View File

@ -451,7 +451,7 @@ $(document).ready(function() {
$(this).append(input); $(this).append(input);
input.focus(); input.focus();
input.change(function(){ input.change(function(){
var name=$(this).val(); var name=getUniqueName($(this).val());
if(type != 'web' && name.indexOf('/')!=-1){ if(type != 'web' && name.indexOf('/')!=-1){
$('#notification').text(t('files','Invalid name, \'/\' is not allowed.')); $('#notification').text(t('files','Invalid name, \'/\' is not allowed.'));
$('#notification').fadeIn(); $('#notification').fadeIn();
@ -496,6 +496,7 @@ $(document).ready(function() {
}else{//or the domain }else{//or the domain
localName=(localName.match(/:\/\/(.[^/]+)/)[1]).replace('www.',''); localName=(localName.match(/:\/\/(.[^/]+)/)[1]).replace('www.','');
} }
localName = getUniqueName(localName);
$.post( $.post(
OC.filePath('files','ajax','newfile.php'), OC.filePath('files','ajax','newfile.php'),
{dir:$('#dir').val(),source:name,filename:localName}, {dir:$('#dir').val(),source:name,filename:localName},
@ -737,7 +738,10 @@ getMimeIcon.cache={};
function getUniqueName(name){ function getUniqueName(name){
if($('tr').filterAttr('data-file',name).length>0){ if($('tr').filterAttr('data-file',name).length>0){
var parts=name.split('.'); var parts=name.split('.');
var extension=parts.pop(); var extension = "";
if (parts.length > 1) {
extension=parts.pop();
}
var base=parts.join('.'); var base=parts.join('.');
numMatch=base.match(/\((\d+)\)/); numMatch=base.match(/\((\d+)\)/);
var num=2; var num=2;
@ -747,7 +751,10 @@ function getUniqueName(name){
base.pop(); base.pop();
base=base.join('(').trim(); base=base.join('(').trim();
} }
name=base+' ('+num+').'+extension; name=base+' ('+num+')';
if (extension) {
name = name+'.'+extension;
}
return getUniqueName(name); return getUniqueName(name);
} }
return name; return name;

View File

@ -11,6 +11,8 @@ class Test_CryptProxy extends UnitTestCase {
private $oldKey; private $oldKey;
public function setUp(){ public function setUp(){
$user=OC_User::getUser();
$this->oldConfig=OCP\Config::getAppValue('files_encryption','enable_encryption','true'); $this->oldConfig=OCP\Config::getAppValue('files_encryption','enable_encryption','true');
OCP\Config::setAppValue('files_encryption','enable_encryption','true'); OCP\Config::setAppValue('files_encryption','enable_encryption','true');
$this->oldKey=isset($_SESSION['enckey'])?$_SESSION['enckey']:null; $this->oldKey=isset($_SESSION['enckey'])?$_SESSION['enckey']:null;
@ -30,10 +32,12 @@ class Test_CryptProxy extends UnitTestCase {
OC_Filesystem::clearMounts(); OC_Filesystem::clearMounts();
OC_Filesystem::mount('OC_Filestorage_Temporary',array(),'/'); OC_Filesystem::mount('OC_Filestorage_Temporary',array(),'/');
OC_Filesystem::init('/'.$user.'/files');
//set up the users home folder in the temp storage //set up the users home folder in the temp storage
$rootView=new OC_FilesystemView(''); $rootView=new OC_FilesystemView('');
$rootView->mkdir('/'.OC_User::getUser()); $rootView->mkdir('/'.$user);
$rootView->mkdir('/'.OC_User::getUser().'/files'); $rootView->mkdir('/'.$user.'/files');
} }
public function tearDown(){ public function tearDown(){

View File

@ -23,7 +23,6 @@ $(document).ready(function() {
}); });
} }
} }
return false;
} }
}); });

View File

@ -24,7 +24,6 @@ $(document).ready(function() {
}); });
} }
} }
return false;
} }
}); });

View File

@ -27,7 +27,7 @@ OC.MountConfig={
} }
}); });
if (addMountPoint) { if (addMountPoint) {
if ($('#externalStorage').data('admin')) { if ($('#externalStorage').data('admin') === true) {
var isPersonal = false; var isPersonal = false;
var multiselect = $(tr).find('.chzn-select').val(); var multiselect = $(tr).find('.chzn-select').val();
var oldGroups = $(tr).find('.applicable').data('applicable-groups'); var oldGroups = $(tr).find('.applicable').data('applicable-groups');
@ -73,7 +73,8 @@ $(document).ready(function() {
$('#selectBackend').live('change', function() { $('#selectBackend').live('change', function() {
var tr = $(this).parent().parent(); var tr = $(this).parent().parent();
$('#externalStorage tbody').last().append($(tr).clone()); $('#externalStorage tbody').append($(tr).clone());
$('#externalStorage tbody tr').last().find('.mountPoint input').val('');
var selected = $(this).find('option:selected').text(); var selected = $(this).find('option:selected').text();
var backendClass = $(this).val(); var backendClass = $(this).val();
$(this).parent().text(selected); $(this).parent().text(selected);
@ -103,6 +104,7 @@ $(document).ready(function() {
}); });
$('.chz-select').chosen(); $('.chz-select').chosen();
$(tr).find('td').last().attr('class', 'remove'); $(tr).find('td').last().attr('class', 'remove');
$(tr).find('td').last().removeAttr('style');
$(tr).removeAttr('id'); $(tr).removeAttr('id');
$(this).remove(); $(this).remove();
}); });
@ -117,7 +119,7 @@ $(document).ready(function() {
if (mountPoint == '') { if (mountPoint == '') {
return false; return false;
} }
if ($('#externalStorage').data('admin')) { if ($('#externalStorage').data('admin') === true) {
var isPersonal = false; var isPersonal = false;
var multiselect = $(tr).find('.chzn-select').val(); var multiselect = $(tr).find('.chzn-select').val();
$.each(multiselect, function(index, value) { $.each(multiselect, function(index, value) {

View File

@ -20,10 +20,14 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
private static $tempFiles=array(); private static $tempFiles=array();
public function __construct($params){ public function __construct($params){
$this->host=$params['host']; $host = $params['host'];
//remove leading http[s], will be generated in createBaseUri()
if (substr($host,0,8) == "https://") $host = substr($host, 8);
else if (substr($host,0,7) == "http://") $host = substr($host, 7);
$this->host=$host;
$this->user=$params['user']; $this->user=$params['user'];
$this->password=$params['password']; $this->password=$params['password'];
$this->secure=isset($params['secure'])?(bool)$params['secure']:false; $this->secure=(isset($params['secure']) && $params['secure'] == 'true')?true:false;
$this->root=isset($params['root'])?$params['root']:'/'; $this->root=isset($params['root'])?$params['root']:'/';
if(!$this->root || $this->root[0]!='/'){ if(!$this->root || $this->root[0]!='/'){
$this->root='/'.$this->root; $this->root='/'.$this->root;
@ -46,7 +50,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
private function createBaseUri(){ private function createBaseUri(){
$baseUri='http'; $baseUri='http';
if($this->secure){ if($this->secure){
$baseUri.'s'; $baseUri.='s';
} }
$baseUri.='://'.$this->host.$this->root; $baseUri.='://'.$this->host.$this->root;
return $baseUri; return $baseUri;
@ -69,13 +73,15 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
$stripLength=strlen($this->root)+strlen($path); $stripLength=strlen($this->root)+strlen($path);
$id=md5('webdav'.$this->root.$path); $id=md5('webdav'.$this->root.$path);
OC_FakeDirStream::$dirs[$id]=array(); OC_FakeDirStream::$dirs[$id]=array();
$skip = true;
foreach($response as $file=>$data){ foreach($response as $file=>$data){
//strip root and path // Skip the first file, because it is the current directory
$file=trim(substr($file,$stripLength)); if ($skip) {
$file=trim($file,'/'); $skip = false;
if($file){ continue;
OC_FakeDirStream::$dirs[$id][]=$file;
} }
$file = urldecode(basename($file));
OC_FakeDirStream::$dirs[$id][]=$file;
} }
return opendir('fakedir://'.$id); return opendir('fakedir://'.$id);
}catch(Exception $e){ }catch(Exception $e){
@ -240,15 +246,11 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
$path=$this->cleanPath($path); $path=$this->cleanPath($path);
try{ try{
$response=$this->client->propfind($path, array('{DAV:}getlastmodified','{DAV:}getcontentlength')); $response=$this->client->propfind($path, array('{DAV:}getlastmodified','{DAV:}getcontentlength'));
if(isset($response['{DAV:}getlastmodified']) and isset($response['{DAV:}getcontentlength'])){ return array(
return array( 'mtime'=>strtotime($response['{DAV:}getlastmodified']),
'mtime'=>strtotime($response['{DAV:}getlastmodified']), 'size'=>(int)isset($response['{DAV:}getcontentlength']) ? $response['{DAV:}getcontentlength'] : 0,
'size'=>(int)$response['{DAV:}getcontentlength'], 'ctime'=>-1,
'ctime'=>-1, );
);
}else{
return array();
}
}catch(Exception $e){ }catch(Exception $e){
return array(); return array();
} }

View File

@ -26,7 +26,7 @@ $backends = OC_Mount_Config::getBackends();
// Remove local storage // Remove local storage
unset($backends['OC_Filestorage_Local']); unset($backends['OC_Filestorage_Local']);
$tmpl = new OCP\Template('files_external', 'settings'); $tmpl = new OCP\Template('files_external', 'settings');
$tmpl->assign('isAdminPage', false); $tmpl->assign('isAdminPage', false, false);
$tmpl->assign('mounts', OC_Mount_Config::getPersonalMountPoints()); $tmpl->assign('mounts', OC_Mount_Config::getPersonalMountPoints());
$tmpl->assign('backends', $backends); $tmpl->assign('backends', $backends);
return $tmpl->fetchPage(); return $tmpl->fetchPage();

View File

@ -23,7 +23,7 @@
OCP\Util::addScript('files_external', 'settings'); OCP\Util::addScript('files_external', 'settings');
OCP\Util::addStyle('files_external', 'settings'); OCP\Util::addStyle('files_external', 'settings');
$tmpl = new OCP\Template('files_external', 'settings'); $tmpl = new OCP\Template('files_external', 'settings');
$tmpl->assign('isAdminPage', true); $tmpl->assign('isAdminPage', true, false);
$tmpl->assign('mounts', OC_Mount_Config::getSystemMountPoints()); $tmpl->assign('mounts', OC_Mount_Config::getSystemMountPoints());
$tmpl->assign('backends', OC_Mount_Config::getBackends()); $tmpl->assign('backends', OC_Mount_Config::getBackends());
$tmpl->assign('groups', OC_Group::getGroups()); $tmpl->assign('groups', OC_Group::getGroups());

View File

@ -1,7 +1,7 @@
<form id="files_external"> <form id="files_external">
<fieldset class="personalblock"> <fieldset class="personalblock">
<legend><strong><?php echo $l->t('External Storage'); ?></strong></legend> <legend><strong><?php echo $l->t('External Storage'); ?></strong></legend>
<table id="externalStorage" data-admin="<?php echo json_encode($_['isAdminPage']); ?>"> <table id="externalStorage" data-admin='<?php echo json_encode($_['isAdminPage']); ?>'>
<thead> <thead>
<tr> <tr>
<th><?php echo $l->t('Mount point'); ?></th> <th><?php echo $l->t('Mount point'); ?></th>
@ -39,7 +39,7 @@
<?php elseif(strpos($placeholder, '!') !== false): ?> <?php elseif(strpos($placeholder, '!') !== false): ?>
<label><input type="checkbox" data-parameter="<?php echo $parameter; ?>" <?php if ($value == 'true') echo ' checked="checked"'; ?> /><?php echo substr($placeholder, 1); ?></label> <label><input type="checkbox" data-parameter="<?php echo $parameter; ?>" <?php if ($value == 'true') echo ' checked="checked"'; ?> /><?php echo substr($placeholder, 1); ?></label>
<?php elseif (strpos($placeholder, '&') !== false): ?> <?php elseif (strpos($placeholder, '&') !== false): ?>
<input type="text" class="optional" data-parameter="<?php echo $parameter; ?>" value="<?php echo $value; ?>" placeholder="<?php echo substr($placeholder, 1); ?>" /> <input type="text" class="optional" data-parameter="<?php echo $parameter; ?>" value="<?php echo $value; ?>" placeholder="<?php echo substr($placeholder, 5); ?>" />
<?php elseif (strpos($placeholder, '#') !== false): ?> <?php elseif (strpos($placeholder, '#') !== false): ?>
<input type="hidden" data-parameter="<?php echo $parameter; ?>" value="<?php echo $value; ?>" /> <input type="hidden" data-parameter="<?php echo $parameter; ?>" value="<?php echo $value; ?>" />
<?php else: ?> <?php else: ?>
@ -74,7 +74,7 @@
</select> </select>
</td> </td>
<?php endif; ?> <?php endif; ?>
<td <?php if ($mountPoint != '') echo 'class="remove"'; ?>><img alt="<?php echo $l->t('Delete'); ?>" title="<?php echo $l->t('Delete'); ?>" class="svg action" src="<?php echo image_path('core', 'actions/delete.svg'); ?>" /></td> <td <?php echo ($mountPoint != '') ? 'class="remove"' : 'style="visibility:hidden;"'; ?>><img alt="<?php echo $l->t('Delete'); ?>" title="<?php echo $l->t('Delete'); ?>" class="svg action" src="<?php echo image_path('core', 'actions/delete.svg'); ?>" /></td>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>
</tbody> </tbody>

View File

@ -4,6 +4,7 @@ namespace OC\Pictures;
class DatabaseManager { class DatabaseManager {
private static $instance = null; private static $instance = null;
protected $cache = array();
const TAG = 'DatabaseManager'; const TAG = 'DatabaseManager';
public static function getInstance() { public static function getInstance() {
@ -12,13 +13,27 @@ class DatabaseManager {
return self::$instance; return self::$instance;
} }
protected function getPathData($path) {
$stmt = \OCP\DB::prepare('SELECT * FROM *PREFIX*pictures_images_cache
WHERE uid_owner LIKE ? AND path like ? AND path not like ?');
$path_match = $path.'/%';
$path_notmatch = $path.'/%/%';
$result = $stmt->execute(array(\OCP\USER::getUser(), $path_match, $path_notmatch));
$this->cache[$path] = array();
while (($row = $result->fetchRow()) != false) {
$this->cache[$path][$row['path']] = $row;
}
}
public function getFileData($path) { public function getFileData($path) {
$gallery_path = \OCP\Config::getSystemValue( 'datadirectory' ).'/'.\OC_User::getUser().'/gallery'; $gallery_path = \OCP\Config::getSystemValue( 'datadirectory' ).'/'.\OC_User::getUser().'/gallery';
$path = $gallery_path.$path; $path = $gallery_path.$path;
$stmt = \OCP\DB::prepare('SELECT * FROM *PREFIX*pictures_images_cache WHERE uid_owner LIKE ? AND path = ?'); $dir = dirname($path);
$result = $stmt->execute(array(\OCP\USER::getUser(), $path)); if (!isset($this->cache[$dir])) {
if (($row = $result->fetchRow()) != false) { $this->getPathData($dir);
return $row; }
if (isset($this->cache[$dir][$path])) {
return $this->cache[$dir][$path];
} }
$image = new \OC_Image(); $image = new \OC_Image();
if (!$image->loadFromFile($path)) { if (!$image->loadFromFile($path)) {
@ -28,6 +43,7 @@ class DatabaseManager {
$stmt->execute(array(\OCP\USER::getUser(), $path, $image->width(), $image->height())); $stmt->execute(array(\OCP\USER::getUser(), $path, $image->width(), $image->height()));
$ret = array('path' => $path, 'width' => $image->width(), 'height' => $image->height()); $ret = array('path' => $path, 'width' => $image->width(), 'height' => $image->height());
unset($image); unset($image);
$this->cache[$dir][$path] = $ret;
return $ret; return $ret;
} }

View File

@ -27,7 +27,7 @@ OC_User::useBackend('openid');
//check for results from openid requests //check for results from openid requests
if(isset($_GET['openid_mode']) and $_GET['openid_mode'] == 'id_res'){ if(isset($_GET['openid_mode']) and $_GET['openid_mode'] == 'id_res'){
OCP\Util::writeLog('user_openid','openid retured',OCP\Util::DEBUG); OCP\Util::writeLog('user_openid','openid retured',OCP\Util::DEBUG);
$openid = new SimpleOpenID; $openid = new SimpleOpenID();
$openid->SetIdentity($_GET['openid_identity']); $openid->SetIdentity($_GET['openid_identity']);
$openid_validation_result = $openid->ValidateWithServer(); $openid_validation_result = $openid->ValidateWithServer();
if ($openid_validation_result == true){ // OK HERE KEY IS VALID if ($openid_validation_result == true){ // OK HERE KEY IS VALID
@ -50,5 +50,3 @@ if(isset($_GET['openid_mode']) and $_GET['openid_mode'] == 'id_res'){
OCP\Util::writeLog('user_openid','USER CANCELED REQUEST',OCP\Util::DEBUG); OCP\Util::writeLog('user_openid','USER CANCELED REQUEST',OCP\Util::DEBUG);
return false; return false;
} }
?>

View File

@ -1 +1 @@
0.1.1 0.1.2

View File

@ -324,5 +324,3 @@ class SimpleOpenID{
} }
} }
} }
?>

View File

@ -37,7 +37,7 @@ class OC_USER_OPENID extends OC_User_Backend {
*/ */
public function checkPassword( $uid, $password ){ public function checkPassword( $uid, $password ){
// Get identity from user and redirect browser to OpenID Server // Get identity from user and redirect browser to OpenID Server
$openid = new SimpleOpenID; $openid = new SimpleOpenID();
$openid->SetIdentity($uid); $openid->SetIdentity($uid);
$openid->SetTrustRoot('http://' . OCP\Util::getServerHost()); $openid->SetTrustRoot('http://' . OCP\Util::getServerHost());
if ($openid->GetOpenIDServer()){ if ($openid->GetOpenIDServer()){
@ -63,7 +63,3 @@ class OC_USER_OPENID extends OC_User_Backend {
} }
} }
} }
?>

View File

@ -35,6 +35,7 @@
} }
button.click(function(event){ button.click(function(event){
var button=$(this); var button=$(this);
if(button.parent().children('ul').length>0){ if(button.parent().children('ul').length>0){
button.parent().children('ul').slideUp(400,function(){ button.parent().children('ul').slideUp(400,function(){
@ -128,19 +129,30 @@
if(event.keyCode == 13) { if(event.keyCode == 13) {
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
var value = $(this).val();
var exists = false;
$.each(options,function(index, item) {
if ($(item).val() == value) {
exists = true;
return false;
}
});
if (exists) {
return false;
}
var li=$(this).parent(); var li=$(this).parent();
$(this).remove(); $(this).remove();
li.text('+ '+settings.createText); li.text('+ '+settings.createText);
li.before(createItem(this)); li.before(createItem(this));
var select=button.parent().next(); var select=button.parent().next();
var option=$('<option selected="selected"/>'); var option=$('<option selected="selected"/>');
option.attr('value',$(this).val()); option.attr('value',value);
option.text($(this).val()); option.text($(this).val());
select.append(options); select.append(option);
li.prev().children('input').trigger('click'); li.prev().children('input').trigger('click');
button.parent().data('preventHide',false); button.parent().data('preventHide',false);
if(settings.createCallback){ if(settings.createCallback){
settings.createCallback(); settings.createCallback($(this).val());
} }
} }
}); });

View File

@ -350,9 +350,13 @@ class OC_App{
protected static function findAppInDirectories($appid) { protected static function findAppInDirectories($appid) {
static $app_dir = array();
if (isset($app_dir[$appid])) {
return $app_dir[$appid];
}
foreach(OC::$APPSROOTS as $dir) { foreach(OC::$APPSROOTS as $dir) {
if(file_exists($dir['path'].'/'.$appid)) { if(file_exists($dir['path'].'/'.$appid)) {
return $dir; return $app_dir[$appid]=$dir;
} }
} }
} }
@ -569,7 +573,7 @@ class OC_App{
} }
/** /**
* get the installed version of all papps * get the installed version of all apps
*/ */
public static function getAppVersions(){ public static function getAppVersions(){
static $versions; static $versions;

View File

@ -167,10 +167,12 @@ class OC_Files {
* @param file $target * @param file $target
*/ */
public static function move($sourceDir,$source,$targetDir,$target){ public static function move($sourceDir,$source,$targetDir,$target){
if(OC_User::isLoggedIn() && ($sourceDir != '' || $source != 'Shared')){ if(OC_User::isLoggedIn() && ($sourceDir != '' || $source != 'Shared') && !OC_Filesystem::file_exists($targetDir.'/'.$target)){
$targetFile=self::normalizePath($targetDir.'/'.$target); $targetFile=self::normalizePath($targetDir.'/'.$target);
$sourceFile=self::normalizePath($sourceDir.'/'.$source); $sourceFile=self::normalizePath($sourceDir.'/'.$source);
return OC_Filesystem::rename($sourceFile,$targetFile); return OC_Filesystem::rename($sourceFile,$targetFile);
} else {
return false;
} }
} }

View File

@ -38,13 +38,10 @@ class OC_Helper {
*/ */
public static function linkTo( $app, $file ){ public static function linkTo( $app, $file ){
if( $app != '' ){ if( $app != '' ){
$app .= '/'; $app_path = OC_App::getAppPath($app);
// Check if the app is in the app folder // Check if the app is in the app folder
if( file_exists( OC_App::getAppPath($app).'/'.$file )){ if( $app_path && file_exists( $app_path.'/'.$file )){
if(substr($file, -3) == 'php' || substr($file, -3) == 'css'){ if(substr($file, -3) == 'php' || substr($file, -3) == 'css'){
if(substr($app, -1, 1) == '/'){
$app = substr($app, 0, strlen($app) - 1);
}
$urlLinkTo = OC::$WEBROOT . '/?app=' . $app; $urlLinkTo = OC::$WEBROOT . '/?app=' . $app;
$urlLinkTo .= ($file!='index.php')?'&getfile=' . urlencode($file):''; $urlLinkTo .= ($file!='index.php')?'&getfile=' . urlencode($file):'';
}else{ }else{
@ -52,7 +49,7 @@ class OC_Helper {
} }
} }
else{ else{
$urlLinkTo = OC::$WEBROOT . '/' . $app . $file; $urlLinkTo = OC::$WEBROOT . '/' . $app . '/' . $file;
} }
} }
else{ else{

View File

@ -285,13 +285,23 @@ class OC_Setup {
//we cant use OC_BD functions here because we need to connect as the administrative user. //we cant use OC_BD functions here because we need to connect as the administrative user.
$e_name = pg_escape_string($name); $e_name = pg_escape_string($name);
$e_user = pg_escape_string($user); $e_user = pg_escape_string($user);
$query = "CREATE DATABASE \"$e_name\" OWNER \"$e_user\""; $query = "select datname from pg_database where datname = '$e_name'";
$result = pg_query($connection, $query); $result = pg_query($connection, $query);
if(!$result) { if(!$result) {
$entry='DB Error: "'.pg_last_error($connection).'"<br />'; $entry='DB Error: "'.pg_last_error($connection).'"<br />';
$entry.='Offending command was: '.$query.'<br />'; $entry.='Offending command was: '.$query.'<br />';
echo($entry); echo($entry);
} }
if(! pg_fetch_row($result)) {
//The database does not exists... let's create it
$query = "CREATE DATABASE \"$e_name\" OWNER \"$e_user\"";
$result = pg_query($connection, $query);
if(!$result) {
$entry='DB Error: "'.pg_last_error($connection).'"<br />';
$entry.='Offending command was: '.$query.'<br />';
echo($entry);
}
}
$query = "REVOKE ALL PRIVILEGES ON DATABASE \"$e_name\" FROM PUBLIC"; $query = "REVOKE ALL PRIVILEGES ON DATABASE \"$e_name\" FROM PUBLIC";
$result = pg_query($connection, $query); $result = pg_query($connection, $query);
} }
@ -299,13 +309,33 @@ class OC_Setup {
private static function pg_createDBUser($name,$password,$connection) { private static function pg_createDBUser($name,$password,$connection) {
$e_name = pg_escape_string($name); $e_name = pg_escape_string($name);
$e_password = pg_escape_string($password); $e_password = pg_escape_string($password);
$query = "CREATE USER \"$e_name\" CREATEDB PASSWORD '$e_password';"; $query = "select * from pg_roles where rolname='$e_name';";
$result = pg_query($connection, $query); $result = pg_query($connection, $query);
if(!$result) { if(!$result) {
$entry='DB Error: "'.pg_last_error($connection).'"<br />'; $entry='DB Error: "'.pg_last_error($connection).'"<br />';
$entry.='Offending command was: '.$query.'<br />'; $entry.='Offending command was: '.$query.'<br />';
echo($entry); echo($entry);
} }
if(! pg_fetch_row($result)) {
//user does not exists let's create it :)
$query = "CREATE USER \"$e_name\" CREATEDB PASSWORD '$e_password';";
$result = pg_query($connection, $query);
if(!$result) {
$entry='DB Error: "'.pg_last_error($connection).'"<br />';
$entry.='Offending command was: '.$query.'<br />';
echo($entry);
}
}
else { // change password of the existing role
$query = "ALTER ROLE \"$e_name\" WITH PASSWORD '$e_password';";
$result = pg_query($connection, $query);
if(!$result) {
$entry='DB Error: "'.pg_last_error($connection).'"<br />';
$entry.='Offending command was: '.$query.'<br />';
echo($entry);
}
}
} }
/** /**

View File

@ -40,7 +40,15 @@ $(document).ready(function(){
}else{ }else{
checkHandeler=false; checkHandeler=false;
} }
var addGroup = function(group) {
$('select[multiple]').each(function(index, element) {
if ($(element).find('option[value="'+group +'"]').length == 0) {
$(element).append('<option value="'+group+'">'+group+'</option>');
}
})
};
element.multiSelect({ element.multiSelect({
createCallback:addGroup,
createText:'add group', createText:'add group',
checked:checked, checked:checked,
oncheck:checkHandeler, oncheck:checkHandeler,

View File

@ -54,3 +54,10 @@ if(!$_['htaccessworking']) {
</table> </table>
<input id='moreLog' type='button' value='<?php echo $l->t('More');?>...'></input> <input id='moreLog' type='button' value='<?php echo $l->t('More');?>...'></input>
</fieldset> </fieldset>
<p class="personalblock">
<strong>ownCloud</strong> <?php echo(OC_Util::getVersionString()); ?> <?php echo(OC_Util::getEditionString()); ?> (<?php echo(OC_Updater::ShowUpdatingHint()); ?>)<br />
Developed by the <a href="http://ownCloud.org/contact" target="_blank">ownCloud community</a>, the <a href="http://gitorious.org/owncloud" target="_blank">source code</a> is licensed under the <a href="http://www.gnu.org/licenses/agpl-3.0.html" target="_blank"><abbr title="Affero General Public License">AGPL</abbr></a>.
</p>

View File

@ -55,10 +55,5 @@
echo $form; echo $form;
};?> };?>
<p class="personalblock">
<strong>ownCloud</strong> <?php echo(OC_Util::getVersionString()); ?> <?php echo(OC_Util::getEditionString()); ?> (<?php echo(OC_Updater::ShowUpdatingHint()); ?>)<br />
Developed by the <a href="http://ownCloud.org/contact" target="_blank">ownCloud community</a>, the <a href="http://gitorious.org/owncloud" target="_blank">source code</a> is freely licensed under the <a href="http://www.gnu.org/licenses/agpl-3.0.html" target="_blank"><abbr title="Affero General Public License">AGPL</abbr></a>.
</p>

View File

@ -21,7 +21,26 @@
*/ */
class Test_Cache_File extends Test_Cache { class Test_Cache_File extends Test_Cache {
function skip() {
$this->skipUnless(OC_User::isLoggedIn());
}
public function setUp(){ public function setUp(){
//clear all proxies and hooks so we can do clean testing
OC_FileProxy::clearProxies();
OC_Hook::clear('OC_Filesystem');
//enable only the encryption hook
OC_FileProxy::register(new OC_FileProxy_Encryption());
//set up temporary storage
OC_Filesystem::clearMounts();
OC_Filesystem::mount('OC_Filestorage_Temporary',array(),'/');
//set up the users dir
$rootView=new OC_FilesystemView('');
$rootView->mkdir('/'.OC_User::getUser());
$this->instance=new OC_Cache_File(); $this->instance=new OC_Cache_File();
} }
} }

View File

@ -28,4 +28,8 @@ class Test_Cache_XCache extends Test_Cache {
public function setUp(){ public function setUp(){
$this->instance=new OC_Cache_XCache(); $this->instance=new OC_Cache_XCache();
} }
function testTTL(){
// ttl doesn't work correctly in the same request
}
} }