diff options
Diffstat (limited to 'apps')
48 files changed, 267 insertions, 928 deletions
diff --git a/apps/bookmarks/addBm.php b/apps/bookmarks/addBm.php index a2a39134eab..a7cdcee8faa 100644 --- a/apps/bookmarks/addBm.php +++ b/apps/bookmarks/addBm.php @@ -41,6 +41,5 @@ $metadata = getURLMetadata($url); $tmpl->assign('URL', htmlentities($metadata['url'])); $tmpl->assign('TITLE', htmlentities($metadata['title'])); -$tmpl->assign('DESCRIPTION', htmlentities($metadata['description'])); $tmpl->printPage(); diff --git a/apps/bookmarks/ajax/addBookmark.php b/apps/bookmarks/ajax/addBookmark.php index 0dc83d9014d..0a7cdfc9be3 100644 --- a/apps/bookmarks/ajax/addBookmark.php +++ b/apps/bookmarks/ajax/addBookmark.php @@ -40,15 +40,14 @@ if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){ //FIXME: Detect when user adds a known URL $query = OC_DB::prepare(" INSERT INTO *PREFIX*bookmarks - (url, title, description, user_id, public, added, lastmodified) - VALUES (?, ?, ?, ?, 0, $_ut, $_ut) + (url, title, user_id, public, added, lastmodified) + VALUES (?, ?, ?, 0, $_ut, $_ut) "); $params=array( htmlspecialchars_decode($_GET["url"]), htmlspecialchars_decode($_GET["title"]), - htmlspecialchars_decode($_GET["description"]), OC_User::getUser() ); $query->execute($params); diff --git a/apps/bookmarks/ajax/editBookmark.php b/apps/bookmarks/ajax/editBookmark.php index b427a175e5f..e205f69bf5a 100644 --- a/apps/bookmarks/ajax/editBookmark.php +++ b/apps/bookmarks/ajax/editBookmark.php @@ -41,14 +41,13 @@ $bookmark_id = (int)$_GET["id"]; $query = OC_DB::prepare(" UPDATE *PREFIX*bookmarks - SET url = ?, title =?, description = ?, lastmodified = $_ut + SET url = ?, title =?, lastmodified = $_ut WHERE id = $bookmark_id "); $params=array( htmlspecialchars_decode($_GET["url"]), htmlspecialchars_decode($_GET["title"]), - htmlspecialchars_decode($_GET["description"]), ); $query->execute($params); diff --git a/apps/bookmarks/ajax/updateList.php b/apps/bookmarks/ajax/updateList.php index 8e9bda0bc20..f2c81256bb6 100644 --- a/apps/bookmarks/ajax/updateList.php +++ b/apps/bookmarks/ajax/updateList.php @@ -59,7 +59,7 @@ if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){ } $query = OC_DB::prepare(' - SELECT id, url, title, description, + SELECT id, url, title, CASE WHEN *PREFIX*bookmarks.id = *PREFIX*bookmarks_tags.bookmark_id THEN GROUP_CONCAT( tag ' .$_gc_separator. ' ) ELSE \' \' diff --git a/apps/bookmarks/appinfo/app.php b/apps/bookmarks/appinfo/app.php index 33b7ba61449..44a1e47dff9 100644 --- a/apps/bookmarks/appinfo/app.php +++ b/apps/bookmarks/appinfo/app.php @@ -1,27 +1,14 @@ <?php - /** -* ownCloud - bookmarks plugin -* -* @author Arthur Schiwon -* @copyright 2011 Arthur Schiwon blizzz@arthur-schiwon.de -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library 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 Lesser General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* +* Copyright (c) 2011 Marvin Thomas Rabe <m.rabe@echtzeitraum.de> +* Copyright (c) 2011 Arthur Schiwon <blizzz@arthur-schiwon.de> +* This file is licensed under the Affero General Public License version 3 or +* later. +* See the COPYING-README file. */ OC_App::register( array( 'order' => 70, 'id' => 'bookmark', 'name' => 'Bookmarks' )); OC_App::addNavigationEntry( array( 'id' => 'bookmarks_index', 'order' => 70, 'href' => OC_Helper::linkTo( 'bookmarks', 'index.php' ), 'icon' => OC_Helper::imagePath( 'bookmarks', 'bookmarks.png' ), 'name' => 'Bookmarks' )); +OC_App::registerPersonal('bookmarks', 'settings'); diff --git a/apps/bookmarks/appinfo/database.xml b/apps/bookmarks/appinfo/database.xml index c30db8bd0c8..fca38ad84b2 100644 --- a/apps/bookmarks/appinfo/database.xml +++ b/apps/bookmarks/appinfo/database.xml @@ -30,13 +30,6 @@ <length>140</length> </field> <field> - <name>description</name> - <type>text</type> - <default></default> - <notnull>false</notnull> - <length>255</length> - </field> - <field> <name>user_id</name> <type>text</type> <default></default> diff --git a/apps/bookmarks/bookmarksHelper.php b/apps/bookmarks/bookmarksHelper.php index d674e595a80..44d4235b9b3 100644 --- a/apps/bookmarks/bookmarksHelper.php +++ b/apps/bookmarks/bookmarksHelper.php @@ -1,5 +1,52 @@ <?php +// Source: http://www.php.net/manual/de/function.curl-setopt.php#102121 +// This works around a safe_mode/open_basedir restriction +function curl_exec_follow(/*resource*/ $ch, /*int*/ &$maxredirect = null) { + $mr = $maxredirect === null ? 5 : intval($maxredirect); + if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off')) { + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $mr > 0); + curl_setopt($ch, CURLOPT_MAXREDIRS, $mr); + } else { + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); + if ($mr > 0) { + $newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); + + $rch = curl_copy_handle($ch); + curl_setopt($rch, CURLOPT_HEADER, true); + curl_setopt($rch, CURLOPT_NOBODY, true); + curl_setopt($rch, CURLOPT_FORBID_REUSE, false); + curl_setopt($rch, CURLOPT_RETURNTRANSFER, true); + do { + curl_setopt($rch, CURLOPT_URL, $newurl); + $header = curl_exec($rch); + if (curl_errno($rch)) { + $code = 0; + } else { + $code = curl_getinfo($rch, CURLINFO_HTTP_CODE); + if ($code == 301 || $code == 302) { + preg_match('/Location:(.*?)\n/', $header, $matches); + $newurl = trim(array_pop($matches)); + } else { + $code = 0; + } + } + } while ($code && --$mr); + curl_close($rch); + if (!$mr) { + if ($maxredirect === null) { + trigger_error('Too many redirects. When following redirects, libcurl hit the maximum amount.', E_USER_WARNING); + } else { + $maxredirect = 0; + } + return false; + } + curl_setopt($ch, CURLOPT_URL, $newurl); + } + } + return curl_exec($ch); +} + function getURLMetadata($url) { //allow only http(s) and (s)ftp $protocols = '/^[hs]{0,1}[tf]{0,1}tp[s]{0,1}\:\/\//i'; @@ -12,17 +59,11 @@ function getURLMetadata($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - $page = curl_exec($ch); + $page = curl_exec_follow($ch); curl_close($ch); @preg_match( "/<title>(.*)<\/title>/si", $page, $match ); $metadata['title'] = htmlspecialchars_decode(@$match[1]); - $meta = get_meta_tags($url); - - if(array_key_exists('description', $meta)) { - $metadata['description'] = $meta['description']; - } - return $metadata; }
\ No newline at end of file diff --git a/apps/bookmarks/css/bookmarks.css b/apps/bookmarks/css/bookmarks.css index 0fc6a2ad608..233d4a02944 100644 --- a/apps/bookmarks/css/bookmarks.css +++ b/apps/bookmarks/css/bookmarks.css @@ -12,34 +12,13 @@ padding: 0.5ex; } -.bookmark_actions { - font-size: smaller; - color: #ff44ff; - padding-left: 4em; -} - -.bookmark_actions span:hover { - cursor: pointer; - text-decoration: underline; -} - -.bookmarks_sorting { - float: left; - margin-left: 2em; -} - -.bookmarks_sorting li { - padding: 1ex 1em; - border: 1px solid gray; - -moz-border-radius:1em; -webkit-border-radius:1em; border-radius:1em; -} - -.bookmarks_sorting_active { - font-weight: bold; -} - .bookmarks_add { display: none; + margin-top: 45px; +} + +.bookmarks_list { + margin-top: 45px; } .bookmarks_addBml { @@ -56,15 +35,28 @@ width: 20em; } +.bookmark_actions { + display: none; + font-size: smaller; + color: #666; + padding-left: 4em; +} + +.bookmark_actions span:hover { + cursor: pointer; + text-decoration: underline; +} + .bookmark_single { - margin-left: 2em; - margin-top: 3ex; - padding: 0.5ex; -/* border-bottom: 1px solid black; */ + padding: 0.5em 1em; } .bookmark_single:hover { - background-color: #ccccff; + background-color: #EAEAEA; +} + +.bookmark_single:hover .bookmark_actions { + display: block; } .bookmark_title { @@ -77,14 +69,10 @@ color: green; } -.bookmark_tags { +.bookmark_tag { color: #ff3333; } -.clear { - clear:both; -} - .loading_meta { display: none; margin-left: 5px; diff --git a/apps/bookmarks/js/addBm.js b/apps/bookmarks/js/addBm.js index 7c914f2338a..6e13b59bb2e 100644 --- a/apps/bookmarks/js/addBm.js +++ b/apps/bookmarks/js/addBm.js @@ -5,11 +5,10 @@ $(document).ready(function() { function addBookmark(event) { var url = $('#bookmark_add_url').val(); var title = $('#bookmark_add_title').val(); - var description = $('#bookmark_add_description').val(); var tags = $('#bookmark_add_tags').val(); $.ajax({ url: 'ajax/addBookmark.php', - data: 'url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&description=' + encodeURI(description) + '&tags=' + encodeURI(tags), + data: 'url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&tags=' + encodeURI(tags), success: function(data){ location.href='index.php'; } diff --git a/apps/bookmarks/js/bookmarks.js b/apps/bookmarks/js/bookmarks.js index 8c0b74b6c67..51646e5382b 100644 --- a/apps/bookmarks/js/bookmarks.js +++ b/apps/bookmarks/js/bookmarks.js @@ -12,9 +12,6 @@ $(document).ready(function() { $(window).scroll(updateOnBottom); $('#bookmark_add_url').focusout(getMetadata); - $('.' + bookmarks_sorting).addClass('bookmarks_sorting_active'); - - $('.bookmarks_sorting li').click(function(event){changeSorting(this)}); $('.bookmarks_list').empty(); getBookmarks(); @@ -39,6 +36,7 @@ function getBookmarks() { for(var i in bookmarks.data) { updateBookmarksList(bookmarks.data[i]); } + $('.bookmark_link').click(recordClick); $('.bookmark_delete').click(delBookmark); $('.bookmark_edit').click(showBookmark); @@ -57,36 +55,21 @@ function getMetadata() { success: function(pageinfo){ $('#bookmark_add_url').val(pageinfo.data.url); $('#bookmark_add_title').val(pageinfo.data.title); - if (pageinfo.data.description !== undefined){ - $('#bookmark_add_description').val(pageinfo.data.description); - } $('.loading_meta').css('display','none'); } }); } -function changeSorting(sortEl) { - $('.' + bookmarks_sorting).removeClass('bookmarks_sorting_active'); - bookmarks_sorting = sortEl.className; - $('.' + bookmarks_sorting).addClass('bookmarks_sorting_active'); - - $('.bookmarks_list').empty(); - bookmarks_page = 0; - bookmarks_loading = false; - getBookmarks(); -} - // function addBookmark() { // Instead of creating editBookmark() function, Converted the one above to // addOrEditBookmark() to make .js file more compact. function addOrEditBookmark(event) { var id = $('#bookmark_add_id').val(); - var url = encodeEntities($('#bookmark_add_url').val()) - var title = encodeEntities($('#bookmark_add_title').val()) - var description = encodeEntities($('#bookmark_add_description').val()) - var tags = encodeEntities($('#bookmark_add_tags').val()) - var taglist = tags.split(' ') + var url = encodeEntities($('#bookmark_add_url').val()); + var title = encodeEntities($('#bookmark_add_title').val()); + var tags = encodeEntities($('#bookmark_add_tags').val()); + var taglist = tags.split(' '); var tagshtml = ''; for ( var i=0, len=taglist.length; i<len; ++i ){ tagshtml += '<a class="bookmark_tag" href="?tag=' + encodeURI(taglist[i]) + '">' + taglist[i] + '</a> '; @@ -95,16 +78,15 @@ function addOrEditBookmark(event) { if (id == 0) { $.ajax({ url: 'ajax/addBookmark.php', - data: 'url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&description=' + encodeURI(description) + '&tags=' + encodeURI(tags), + data: 'url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&tags=' + encodeURI(tags), success: function(response){ var bookmark_id = response.data; $('.bookmarks_add').slideToggle(); $('.bookmarks_add').children('p').children('.bookmarks_input').val(''); $('.bookmarks_list').prepend( '<div class="bookmark_single" data-id="' + bookmark_id + '" >' + - '<p class="bookmark_title"><a href="' + url + '" target="_new" class="bookmark_link">' + title + '</a></p>' + + '<p class="bookmark_title"><a href="' + url + '" target="_blank" class="bookmark_link">' + title + '</a></p>' + '<p class="bookmark_url">' + url + '</p>' + - '<p class="bookmark_description">' + description + '</p>' + '<p class="bookmark_tags">' + tagshtml + '</p>' + '<p class="bookmark_actions"><span class="bookmark_delete">Delete</span> <span class="bookmark_edit">Edit</span></p>' + '</div>' @@ -115,8 +97,7 @@ function addOrEditBookmark(event) { else { $.ajax({ url: 'ajax/editBookmark.php', - data: 'id=' + id + '&url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&description=' + - encodeURI(description) + '&tags=' + encodeURI(tags), + data: 'id=' + id + '&url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&tags=' + encodeURI(tags), success: function(){ $('.bookmarks_add').slideToggle(); $('.bookmarks_add').children('p').children('.bookmarks_input').val(''); @@ -124,7 +105,6 @@ function addOrEditBookmark(event) { var record = $('.bookmark_single[data-id = "' + id + '"]'); record.children('.bookmark_url:first').text(url); - record.children('.bookmark_description:first').text(description); var record_title = record.children('.bookmark_title:first').children('a:first'); record_title.attr('href', url); @@ -138,7 +118,7 @@ function addOrEditBookmark(event) { } function delBookmark(event) { - var record = $(this).parent().parent() + var record = $(this).parent().parent(); $.ajax({ url: 'ajax/delBookmark.php', data: 'url=' + encodeURI($(this).parent().parent().children('.bookmark_url:first').text()), @@ -151,7 +131,6 @@ function showBookmark(event) { $('#bookmark_add_id').val(record.attr('data-id')); $('#bookmark_add_url').val(record.children('.bookmark_url:first').text()); $('#bookmark_add_title').val(record.children('.bookmark_title:first').text()); - $('#bookmark_add_description').val(record.children('.bookmark_description:first').text()); $('#bookmark_add_tags').val(record.children('.bookmark_tags:first').text()); if ($('.bookmarks_add').css('display') == 'none') { @@ -163,10 +142,6 @@ function showBookmark(event) { } -function editBookmark(event) { - -} - function updateBookmarksList(bookmark) { var tags = encodeEntities(bookmark.tags).split(' '); var taglist = ''; @@ -178,9 +153,8 @@ function updateBookmarksList(bookmark) { } $('.bookmarks_list').append( '<div class="bookmark_single" data-id="' + bookmark.id +'" >' + - '<p class="bookmark_title"><a href="' + encodeEntities(bookmark.url) + '" target="_new" class="bookmark_link">' + encodeEntities(bookmark.title) + '</a></p>' + + '<p class="bookmark_title"><a href="' + encodeEntities(bookmark.url) + '" target="_blank" class="bookmark_link">' + encodeEntities(bookmark.title) + '</a></p>' + '<p class="bookmark_url">' + encodeEntities(bookmark.url) + '</p>' + - '<p class="bookmark_description">' + encodeEntities(bookmark.description) + '</p>' + '<p class="bookmark_tags">' + taglist + '</p>' + '<p class="bookmark_actions"><span class="bookmark_delete">Delete</span> <span class="bookmark_edit">Edit</span></p>' + '</div>' diff --git a/apps/bookmarks/settings.php b/apps/bookmarks/settings.php new file mode 100644 index 00000000000..8186472dec9 --- /dev/null +++ b/apps/bookmarks/settings.php @@ -0,0 +1,13 @@ +<?php +/** + * Copyright (c) 2011 Marvin Thomas Rabe <m.rabe@echtzeitraum.de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +$tmpl = new OC_Template( 'bookmarks', 'settings'); + +OC_Util::addScript('bookmarks','settings'); + +return $tmpl->fetchPage(); diff --git a/apps/bookmarks/templates/addBm.php b/apps/bookmarks/templates/addBm.php index 36f04e135b6..c285c3579c5 100644 --- a/apps/bookmarks/templates/addBm.php +++ b/apps/bookmarks/templates/addBm.php @@ -1,7 +1,6 @@ <div class="bookmarks_addBm"> <p><label class="bookmarks_label"><?php echo $l->t('Address'); ?></label><input type="text" id="bookmark_add_url" class="bookmarks_input" value="<?php echo $_['URL']; ?>"/></p> <p><label class="bookmarks_label"><?php echo $l->t('Title'); ?></label><input type="text" id="bookmark_add_title" class="bookmarks_input" value="<?php echo $_['TITLE']; ?>" /></p> - <p><label class="bookmarks_label"><?php echo $l->t('Description'); ?></label><input type="text" id="bookmark_add_description" class="bookmarks_input" value="<?php echo $_['DESCRIPTION']; ?>" /></p> <p><label class="bookmarks_label"><?php echo $l->t('Tags'); ?></label><input type="text" id="bookmark_add_tags" class="bookmarks_input" /></p> <p><label class="bookmarks_label"> </label><label class="bookmarks_hint"><?php echo $l->t('Hint: Use space to separate tags.'); ?></label></p> <p><label class="bookmarks_label"></label><input type="submit" value="<?php echo $l->t('Add bookmark'); ?>" id="bookmark_add_submit" /></p> diff --git a/apps/bookmarks/templates/list.php b/apps/bookmarks/templates/list.php index d73657b36ac..ccfe74f008f 100644 --- a/apps/bookmarks/templates/list.php +++ b/apps/bookmarks/templates/list.php @@ -1,27 +1,25 @@ +<?php +/** + * Copyright (c) 2011 Marvin Thomas Rabe <m.rabe@echtzeitraum.de> + * Copyright (c) 2011 Arthur Schiwon <blizzz@arthur-schiwon.de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +?> <input type="hidden" id="bookmarkFilterTag" value="<?php if(isset($_GET['tag'])) echo htmlentities($_GET['tag']); ?>" /> -<h2 class="bookmarks_headline"><?php echo isset($_GET["tag"]) ? $l->t('Bookmarks with tag: ') . urldecode($_GET["tag"]) : $l->t('All bookmarks'); ?></h2> -<div class="bookmarks_menu"> - <input type="button" class="bookmarks_addBtn" value="<?php echo $l->t('Add bookmark'); ?>"/> - <a class="bookmarks_addBml" href="javascript:var url = encodeURIComponent(location.href);window.open('<?php echo OC_Helper::linkTo('bookmarks', 'addBm.php', null, true); ?>?url='+url, 'owncloud-bookmarks');" title="<?php echo $l->t('Drag this to your browser bookmarks and click it, when you want to bookmark a webpage.'); ?>"><?php echo $l->t('Add page to ownCloud'); ?></a> +<div id="controls"> + <input type="button" class="bookmarks_addBtn" value="<?php echo $l->t('Add bookmark'); ?>"/> </div> <div class="bookmarks_add"> <input type="hidden" id="bookmark_add_id" value="0" /> <p><label class="bookmarks_label"><?php echo $l->t('Address'); ?></label><input type="text" id="bookmark_add_url" class="bookmarks_input" /></p> <p><label class="bookmarks_label"><?php echo $l->t('Title'); ?></label><input type="text" id="bookmark_add_title" class="bookmarks_input" /> <img class="loading_meta" src="<?php echo OC_Helper::imagePath('core', 'loading.gif'); ?>" /></p> - <p><label class="bookmarks_label"><?php echo $l->t('Description'); ?></label><input type="text" id="bookmark_add_description" class="bookmarks_input" /> - <img class="loading_meta" src="<?php echo OC_Helper::imagePath('core', 'loading.gif'); ?>" /></p> <p><label class="bookmarks_label"><?php echo $l->t('Tags'); ?></label><input type="text" id="bookmark_add_tags" class="bookmarks_input" /></p> <p><label class="bookmarks_label"> </label><label class="bookmarks_hint"><?php echo $l->t('Hint: Use space to separate tags.'); ?></label></p> <p><label class="bookmarks_label"></label><input type="submit" value="<?php echo $l->t('Add bookmark'); ?>" id="bookmark_add_submit" /></p> </div> -<div class="bookmarks_sorting pager"> - <ul> - <li class="bookmarks_sorting_recent"><?php echo $l->t('Recent Bookmarks'); ?></li> - <li class="bookmarks_sorting_clicks"><?php echo $l->t('Most clicks'); ?></li> - </ul> -</div> -<div class="clear"></div> <div class="bookmarks_list"> <?php echo $l->t('You have no bookmarks'); ?> -</div> +</div>
\ No newline at end of file diff --git a/apps/bookmarks/templates/settings.php b/apps/bookmarks/templates/settings.php new file mode 100644 index 00000000000..b7da441c2f8 --- /dev/null +++ b/apps/bookmarks/templates/settings.php @@ -0,0 +1,14 @@ +<?php +/** + * Copyright (c) 2011 Marvin Thomas Rabe <m.rabe@echtzeitraum.de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +?> +<form id="bookmarks"> + <fieldset class="personalblock"> + <span class="bold"><?php echo $l->t('Bookmarklet:');?></span> <a class="bookmarks_addBml" href="javascript:var url = encodeURIComponent(location.href);window.open('<?php echo OC_Helper::linkTo('bookmarks', 'addBm.php', null, true); ?>?url='+url, 'owncloud-bookmarks');"><?php echo $l->t('Add page to ownCloud'); ?></a> + <br/><em><?php echo $l->t('Drag this to your browser bookmarks and click it, when you want to bookmark a webpage.'); ?></em><br /> + </fieldset> +</form> diff --git a/apps/calendar/ajax/createcalendar.php b/apps/calendar/ajax/createcalendar.php index 82176d4368a..3fb2e8398a3 100644 --- a/apps/calendar/ajax/createcalendar.php +++ b/apps/calendar/ajax/createcalendar.php @@ -15,7 +15,7 @@ OC_JSON::checkLoggedIn(); OC_JSON::checkAppEnabled('calendar'); $userid = OC_User::getUser(); -$calendarid = OC_Calendar_Calendar::addCalendar($userid, $_POST['name'], $_POST['description'], 'VEVENT,VTODO,VJOURNAL', null, 0, $_POST['color']); +$calendarid = OC_Calendar_Calendar::addCalendar($userid, $_POST['name'], 'VEVENT,VTODO,VJOURNAL', null, 0, $_POST['color']); OC_Calendar_Calendar::setCalendarActive($calendarid, 1); $calendar = OC_Calendar_Calendar::findCalendar($calendarid); $tmpl = new OC_Template('calendar', 'part.choosecalendar.rowfields'); diff --git a/apps/calendar/ajax/getcal.php b/apps/calendar/ajax/getcal.php index 3d43677075f..a65c6cf2602 100644 --- a/apps/calendar/ajax/getcal.php +++ b/apps/calendar/ajax/getcal.php @@ -28,674 +28,43 @@ $select_year = $_GET["year"]; $user_timezone = OC_Preferences::getValue(OC_USER::getUser(), "calendar", "timezone", "Europe/London"); foreach($events as $event) { - if($select_year != substr($event['startdate'], 0, 4) && $event["repeating"] == false) + if ($select_year != substr($event['startdate'], 0, 4)) continue; - if($select_year == substr($event['startdate'], 0, 4) && $event["repeating"] == false){ - $object = Sabre_VObject_Reader::read($event['calendardata']); - $vevent = $object->VEVENT; - $dtstart = $vevent->DTSTART; - $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent); - $start_dt = $dtstart->getDateTime(); - $start_dt->setTimezone(new DateTimeZone($user_timezone)); - $end_dt = $dtend->getDateTime(); - $end_dt->setTimezone(new DateTimeZone($user_timezone)); - $year = $start_dt->format('Y'); - $month = $start_dt->format('n') - 1; // return is 0 based - $day = $start_dt->format('j'); - $hour = $start_dt->format('G'); - if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $hour = 'allday'; - } + $object = Sabre_VObject_Reader::read($event['calendardata']); + $vevent = $object->VEVENT; + $dtstart = $vevent->DTSTART; + $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent); + $start_dt = $dtstart->getDateTime(); + $start_dt->setTimezone(new DateTimeZone($user_timezone)); + $end_dt = $dtend->getDateTime(); + $end_dt->setTimezone(new DateTimeZone($user_timezone)); + $year = $start_dt->format('Y'); + $month = $start_dt->format('n') - 1; // return is 0 based + $day = $start_dt->format('j'); + $hour = $start_dt->format('G'); + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop) - { - $return_event[$prop] = $event[$prop]; - } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - if ($hour == 'allday') - { - $return_event['allday'] = true; - } - if (isset($return[$year][$month][$day][$hour])) - { - $return[$year][$month][$day][$hour][] = $return_event; - } - else - { - $return[$year][$month][$day][$hour] = array(1 => $return_event); - } + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop) + { + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + if ($hour == 'allday') + { + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])) + { + $return[$year][$month][$day][$hour][] = $return_event; } - if($event["repeating"] == 1){ - $object = Sabre_VObject_Reader::read($event['calendardata']); - $vevent = $object->VEVENT; - //echo substr_count($event["calendardata"], "EXDATE"); - $numofelements = substr_count($vevent->RRULE, ";"); - $properties = array("FREQ"=>"false", "UNTIL"=>"false", "COUNT"=>"false", "INTERVAL"=>"false", "BYDAY"=>"false", "BYMONTHDAY"=>"false", "BYWEEKNO"=>"false", "BYMONTH"=>"false", "BYYEARDAY"=>"false", "BYSETPOS"=>"false"); - $exruleproperties = array("FREQ"=>"false", "UNTIL"=>"false", "COUNT"=>"false", "INTERVAL"=>"false", "BYDAY"=>"false", "BYMONTHDAY"=>"false", "BYWEEKNO"=>"false", "BYMONTH"=>"false", "BYYEARDAY"=>"false", "BYSETPOS"=>"false"); - $byday = array("MO"=>"false", "TU"=>"false", "WE"=>"false", "TH"=>"false", "FR"=>"false", "SA"=>"false", "SU"=>"false"); - if($numofelements != 0){ - $rrule = explode(";", $vevent->RRULE); - for($i = 0;$i <= $numofelements;$i++){ - $rule = explode("=", $rrule[$i]); - $property = $rule[0]; - $value = $rule[1]; - $properties[$property] = $value; - } - if($properties["BYDAY"] != "false"){ - $numofdays = substr_count($properties["BYDAY"], ","); - if($numofdays == 0){ - if(strlen($properties["BYDAY"]) != 2){ - $lenght = strlen($properties["BYDAY"]); - switch($lenght){ - case "3": - $properties["BYSETPOS"] = substr($properties["BYDAY"],0,1); - $properties["BYDAY"] = substr($properties["BYDAY"],1,2); - break; - case "4": - $properties["BYSETPOS"] = substr($properties["BYDAY"],0,2); - $properties["BYDAY"] = substr($properties["BYDAY"],2,2); - break; - case "5": - $properties["BYSETPOS"] = substr($properties["BYDAY"],0,3); - $properties["BYDAY"] = substr($properties["BYDAY"],3,2); - break; - case "6": - $properties["BYSETPOS"] = substr($properties["BYDAY"],0,4); - $properties["BYDAY"] = substr($properties["BYDAY"],4,2); - break; - } - } - $byday[$properties["BYDAY"]] = true; - - }else{ - $days = explode(",", $properties["BYDAY"]); - for($i = 0;$i <= $numofdays;$i++){ - $day = $days[$i]; - $byday[$day] = true; - } - } - } - }else{ - $rule = explode("=", $vevent->RRULE); - $properties[$rule[0]] = $rule[1]; - } - if($properties["INTERVAL"] == "false"){ - $properties["INTERVAL"] = 1; - } - $count = 0; //counts all loops - $countedoutputs = 0; //counts only the outputs - $countchecker = true; - $dtstart = $vevent->DTSTART; - $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent); - $start_dt = $dtstart->getDateTime(); - $start_dt->setTimezone(new DateTimeZone($user_timezone)); - $end_dt = $dtend->getDateTime(); - $end_dt->setTimezone(new DateTimeZone($user_timezone)); - $firststart_year = $start_dt->format('Y'); - $firststart_month = $start_dt->format('n'); - $firststart_day = $start_dt->format('j'); - $hour = $start_dt->format('G'); - $interval = 0; - if($properties["UNTIL"] != "false"){ - $until = $properties["UNTIL"]; - $until_year = substr($until, 0, 4); - $until_month = substr($until, 4, 2); - $until_day = substr($until, 6, 2); - } - //print_r($properties); - //print_r($byday); - if($properties["FREQ"] == "DAILY"){ - if($properties["BYDAY"] == "false"){ - $byday = array("MO"=>"1", "TU"=>"1", "WE"=>"1", "TH"=>"1", "FR"=>"1", "SA"=>"1", "SU"=>"1"); - } - while(date("Y", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval)) <= $select_year && $countchecker == true){ - if($byday[strtoupper(substr(date("D", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval)), 0, 2))] == "1"){ - $newunixtime = mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval); - $year = date("Y", $newunixtime); - $month = date("n", $newunixtime) - 1; // return is 0 based - $day = date("j", $newunixtime); - if($properties["UNTIL"] != "false"){ - if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ - break; - } - } - if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $hour = 'allday'; - } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ - $return_event[$prop] = $event[$prop]; - } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - $interval = $properties["INTERVAL"]; - $countedoutputs++; - if($properties["COUNT"] != "false"){ - if($countedoutputs == $properties["COUNT"]){ - $countchecker = false; - } - } - if ($hour == 'allday'){ - $return_event['allday'] = true; - } - if (isset($return[$year][$month][$day][$hour])){ - $return[$year][$month][$day][$hour][] = $return_event; - }else{ - $return[$year][$month][$day][$hour] = array(1 => $return_event); - } - } - $count++; - } - } - if($properties["FREQ"] == "WEEKLY"){ - if($properties["BYDAY"] == "false"){ - $byday[strtoupper(substr(date("D", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year)), 0, 2))] = "1"; - } - while(date("Y", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval)) <= $select_year && $countchecker == true){ - if($byday[strtoupper(substr(date("D", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval)), 0, 2))] == "1"){ - $newunixtime = mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval); - $year = date("Y", $newunixtime); - $month = date("n", $newunixtime) - 1; // return is 0 based - $day = date("j", $newunixtime); - if($properties["UNTIL"] != "false"){ - if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ - break; - } - } - if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $hour = 'allday'; - } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ - $return_event[$prop] = $event[$prop]; - } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - $interval = $properties["INTERVAL"]; - $countedoutputs++; - if($properties["COUNT"] != "false"){ - if($countedoutputs == $properties["COUNT"]){ - $countchecker = false; - } - } - if ($hour == 'allday'){ - $return_event['allday'] = true; - } - if (isset($return[$year][$month][$day][$hour])){ - $return[$year][$month][$day][$hour][] = $return_event; - }else{ - $return[$year][$month][$day][$hour] = array(1 => $return_event); - } - } - $count++; - } - } - if($properties["FREQ"] == "MONTHLY"){ - if(substr_count($properties["BYMONTHDAY"], ",") != 0){ - $numofBYMONTHDAY = substr_count($properties["BYMONTHDAY"], ","); - if($numofBYMONTHDAY == 0){ - $BYMONTHDAY = array(); - $BYMONTHDAY[0] = $properties["BYMONTHDAY"]; - }else{ - $BYMONTHDAY = explode(",", $properties["BYMONTHDAY"]); - } - while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $properties["BYMONTHDAY"], $firststart_year)) <= $select_year && $countchecker == true){ - for($i = 0;$i <= $numofBYMONTHDAY;$i++){ - $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $BYMONTHDAY[$i], $firststart_year); - $year = date("Y", $newunixtime); - $month = date("n", $newunixtime) - 1; // return is 0 based - $day = date("j", $newunixtime); - if($properties["UNTIL"] != "false"){ - if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ - break; - } - } - if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $hour = 'allday'; - } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ - $return_event[$prop] = $event[$prop]; - } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - $interval = $properties["INTERVAL"]; - $countedoutputs++; - if($properties["COUNT"] != "false"){ - if($countedoutputs == $properties["COUNT"]){ - $countchecker = false; - } - } - if ($hour == 'allday'){ - $return_event['allday'] = true; - } - if (isset($return[$year][$month][$day][$hour])){ - $return[$year][$month][$day][$hour][] = $return_event; - }else{ - $return[$year][$month][$day][$hour] = array(1 => $return_event); - } - } - $count++; - } - } - //if($properties["BYMONTHDAY"] != "false"){ - if($properties["BYSETPOS"] == "false"){ - while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $properties["BYMONTHDAY"], $firststart_year)) <= $select_year && $countchecker == true){ - $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $properties["BYMONTHDAY"], $firststart_year); - $year = date("Y", $newunixtime); - $month = date("n", $newunixtime) - 1; // return is 0 based - $day = date("j", $newunixtime); - if($properties["UNTIL"] != "false"){ - if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ - break; - } - } - if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $hour = 'allday'; - } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ - $return_event[$prop] = $event[$prop]; - } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - $interval = $properties["INTERVAL"]; - $countedoutputs++; - if($properties["COUNT"] != "false"){ - if($countedoutputs == $properties["COUNT"]){ - $countchecker = false; - } - } - if ($hour == 'allday'){ - $return_event['allday'] = true; - } - if (isset($return[$year][$month][$day][$hour])){ - $return[$year][$month][$day][$hour][] = $return_event; - }else{ - $return[$year][$month][$day][$hour] = array(1 => $return_event); - } - $count++; - } - }else{ - if(!is_nan($properties["BYSETPOS"]) && $properties["BYSETPOS"] >= 1){ - while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)) <= $select_year && $countchecker == true){ - $lastdayofmonth = date("t", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)); - $matches = 0; - $matchedday = ""; - for($i = 1;$i <= $lastdayofmonth;$i++){ - $thisday = date("j", mktime(0,0,0, $firststart_month + ($count * $interval), $i, $firststart_year)); - $thisdayname = strtoupper(substr(date("D", mktime(0,0,0, $firststart_month + ($count * $interval), $i, $firststart_year)),0,2)); - //echo $thisdayname . " " . $thisday . "\n"; - if($byday[$thisdayname] == 1){ - $matches++; - } - if($matches == $properties["BYSETPOS"]){ - $matchedday = $thisday; - $i = 32; - } - } - $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year); - $year = date("Y", $newunixtime); - $month = date("n", $newunixtime) - 1; // return is 0 based - $day = $matchedday; - if($properties["UNTIL"] != "false"){ - if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ - break; - } - } - if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $hour = 'allday'; - } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ - $return_event[$prop] = $event[$prop]; - } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - $interval = $properties["INTERVAL"]; - $countedoutputs++; - if($properties["COUNT"] != "false"){ - if($countedoutputs == $properties["COUNT"]){ - $countchecker = false; - } - } - if ($hour == 'allday'){ - $return_event['allday'] = true; - } - if (isset($return[$year][$month][$day][$hour])){ - $return[$year][$month][$day][$hour][] = $return_event; - }else{ - $return[$year][$month][$day][$hour] = array(1 => $return_event); - } - $count++; - } - }elseif(!is_nan($properties["BYSETPOS"]) && $properties["BYSETPOS"] <= -1){ - while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)) <= $select_year && $countchecker == true){ - $lastdayofmonth = date("t", mktime(0,0,0, $firststart_month + ($count * $interval), 1, $firststart_year)); - $matches = 0; - $matchedday = ""; - for($i = $lastdayofmonth;$i >= 1;$i--){ - $thisday = date("j", mktime(0,0,0, $firststart_month + ($count * $interval), $i, $firststart_year)); - $thisdayname = strtoupper(substr(date("D", mktime(0,0,0, $firststart_month + ($count * $interval), $i, $firststart_year)),0,2)); - //echo $thisdayname . " " . $thisday . "\n"; - if($byday[$thisdayname] == 1){ - $matches++; - } - if($matches == $properties["BYSETPOS"]){ - $matchedday = $thisday; - $i = 0; - } - } - $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year); - $year = date("Y", $newunixtime); - $month = date("n", $newunixtime) - 1; // return is 0 based - $day = $matchedday; - if($properties["UNTIL"] != "false"){ - if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ - break; - } - } - if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $hour = 'allday'; - } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ - $return_event[$prop] = $event[$prop]; - } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - $interval = $properties["INTERVAL"]; - $countedoutputs++; - if($properties["COUNT"] != "false"){ - if($countedoutputs == $properties["COUNT"]){ - $countchecker = false; - } - } - if ($hour == 'allday'){ - $return_event['allday'] = true; - } - if (isset($return[$year][$month][$day][$hour])){ - $return[$year][$month][$day][$hour][] = $return_event; - }else{ - $return[$year][$month][$day][$hour] = array(1 => $return_event); - } - $count++; - } - //} - } - } - if(strlen($properties["BYDAY"]) == 2){ - while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)) <= $select_year && $countchecker == true){ - if($byday[strtoupper(substr(date("D", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)), 0, 2))] == "1"){ - $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year); - $year = date("Y", $newunixtime); - $month = date("n", $newunixtime) - 1; // return is 0 based - $day = date("j", $newunixtime); - if($properties["UNTIL"] != "false"){ - if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ - break; - } - } - if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $hour = 'allday'; - } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ - $return_event[$prop] = $event[$prop]; - } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - $interval = $properties["INTERVAL"]; - $countedoutputs++; - if($properties["COUNT"] != "false"){ - if($countedoutputs == $properties["COUNT"]){ - $countchecker = false; - } - } - if ($hour == 'allday'){ - $return_event['allday'] = true; - } - if (isset($return[$year][$month][$day][$hour])){ - $return[$year][$month][$day][$hour][] = $return_event; - }else{ - $return[$year][$month][$day][$hour] = array(1 => $return_event); - } - } - $count++; - } - }else{ - while(date("Y", mktime(0,0,0, 0, 0, $firststart_year + ($count * $interval))) <= $select_year && $countchecker == true){ - $newunixtime = mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval)); - $year = date("Y", $newunixtime); - $month = $month - 1; // return is 0 based - $day = $dateofweekone; - if($properties["UNTIL"] != "false"){ - if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ - break; - } - } - if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $hour = 'allday'; - } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ - $return_event[$prop] = $event[$prop]; - } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - $interval = $properties["INTERVAL"]; - $countedoutputs++; - if($properties["COUNT"] != "false"){ - if($countedoutputs == $properties["COUNT"]){ - $countchecker = false; - } - } - if ($hour == 'allday'){ - $return_event['allday'] = true; - } - if (isset($return[$year][$month][$day][$hour])){ - $return[$year][$month][$day][$hour][] = $return_event; - }else{ - $return[$year][$month][$day][$hour] = array(1 => $return_event); - } - $count++; - } - } - } - if($properties["FREQ"] == "YEARLY"){ - if($properties["BYMONTH"] != "false"){ - if($properties["BYMONTHDAY"] == false){ - $properties["BYMONTHDAY"] = date("j", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year)); - } - if($properties["BYDAY"] == "false"){ - while(date("Y", mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval))) <= $select_year && $countchecker == true){ - $newunixtime = mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval)); - $year = date("Y", $newunixtime); - $month = date("n", $newunixtime) - 1; // return is 0 based - $day = date("j", $newunixtime); - if($properties["UNTIL"] != "false"){ - if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ - break; - } - } - if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $hour = 'allday'; - } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ - $return_event[$prop] = $event[$prop]; - } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - $interval = $properties["INTERVAL"]; - $countedoutputs++; - if($properties["COUNT"] != "false"){ - if($countedoutputs == $properties["COUNT"]){ - $countchecker = false; - } - } - if ($hour == 'allday'){ - $return_event['allday'] = true; - } - if (isset($return[$year][$month][$day][$hour])){ - $return[$year][$month][$day][$hour][] = $return_event; - }else{ - $return[$year][$month][$day][$hour] = array(1 => $return_event); - } - $count++; - } - } - if(strlen($properties["BYDAY"]) == 2){ - while(date("Y", mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval))) <= $select_year && $countchecker == true){ - $newunixtime = mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval)); - $year = date("Y", $newunixtime); - $month = date("n", $newunixtime) - 1; // return is 0 based - $day = date("j", $newunixtime); - if($properties["UNTIL"] != "false"){ - if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ - break; - } - } - if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $hour = 'allday'; - } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ - $return_event[$prop] = $event[$prop]; - } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - $interval = $properties["INTERVAL"]; - $countedoutputs++; - if($properties["COUNT"] != "false"){ - if($countedoutputs == $properties["COUNT"]){ - $countchecker = false; - } - } - if ($hour == 'allday'){ - $return_event['allday'] = true; - } - if (isset($return[$year][$month][$day][$hour])){ - $return[$year][$month][$day][$hour][] = $return_event; - }else{ - $return[$year][$month][$day][$hour] = array(1 => $return_event); - } - $count++; - } - }else{ - $number = substr($properties["BYDAY"],0,1); - $weekday = substr($properties["BYDAY"],1,2); - $month = $properties["BYMONTH"]; - $dateofweekone = ""; - for($i = 0; $i <= 7;$i++){ - if(strtoupper(substr(date("D", mktime(0,0,0, $properties["BYMONTH"], $i, $select_year)), 0, 2)) == $weekday){ - $dateofweekone = date("j", mktime(0,0,0, $properties["BYMONTH"], $i, $select_year)); - $i = 8; - } - } - if($number != 1){ - $dateofweekone = $dateofweekone + (7 * ($number - 1)); - } - while(date("Y", mktime(0,0,0, 0, 0, $firststart_year + ($count * $interval))) <= $select_year && $countchecker == true){ - $newunixtime = mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval)); - $year = date("Y", $newunixtime); - $month = $month - 1; // return is 0 based - $day = $dateofweekone; - if($properties["UNTIL"] != "false"){ - if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ - break; - } - } - if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $hour = 'allday'; - } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ - $return_event[$prop] = $event[$prop]; - } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - $interval = $properties["INTERVAL"]; - $countedoutputs++; - if($properties["COUNT"] != "false"){ - if($countedoutputs == $properties["COUNT"]){ - $countchecker = false; - } - } - if ($hour == 'allday'){ - $return_event['allday'] = true; - } - if (isset($return[$year][$month][$day][$hour])){ - $return[$year][$month][$day][$hour][] = $return_event; - }else{ - $return[$year][$month][$day][$hour] = array(1 => $return_event); - } - $count++; - } - } - }elseif($properties["BYYEARDAY"] != false){ - $numofyeardays = substr_count($properties["BYYEARDAY"], ","); - if($numofyeardays == 0){ - $yeardays = array(); - $yeardays[0] = $properties["BYYEARDAY"]; - }else{ - $yeardays = explode(",", $properties["BYYEARDAY"]); - } - while(date("Y", mktime(0,0,0, 0, 0, $firststart_year + ($count * $interval)) + ($yeardays[$numofyeardays]-1) * 86400) <= $select_year && $countchecker == true){ - for($i = 0;$i <= $numofyeardays;$i++){ - $newunixtime = mktime(0,0,0, 1, 1, $firststart_year + ($count * $interval)) + ($yeardays[$i] -1) * 86400; - $year = date("Y", $newunixtime); - $month = date("n", $newunixtime) - 1; // return is 0 based - $day = date("j", $newunixtime); - if($properties["UNTIL"] != "false"){ - if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ - break; - } - } - if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $hour = 'allday'; - } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ - $return_event[$prop] = $event[$prop]; - } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - $interval = $properties["INTERVAL"]; - $countedoutputs++; - if($properties["COUNT"] != "false"){ - if($countedoutputs == $properties["COUNT"]){ - $countchecker = false; - } - } - if ($hour == 'allday'){ - $return_event['allday'] = true; - } - if (isset($return[$year][$month][$day][$hour])){ - $return[$year][$month][$day][$hour][] = $return_event; - }else{ - $return[$year][$month][$day][$hour] = array(1 => $return_event); - } - } - $count++; - } - } - } + else + { + $return[$year][$month][$day][$hour] = array(1 => $return_event); } } OC_JSON::encodedPrint($return); diff --git a/apps/calendar/ajax/newcalendar.php b/apps/calendar/ajax/newcalendar.php index e01ae01ee8a..f00dd0fb862 100644 --- a/apps/calendar/ajax/newcalendar.php +++ b/apps/calendar/ajax/newcalendar.php @@ -15,7 +15,6 @@ OC_JSON::checkAppEnabled('calendar'); $calendar = array( 'id' => 'new', 'displayname' => '', - 'description' => '', 'calendarcolor' => '', ); $tmpl = new OC_Template('calendar', 'part.editcalendar'); diff --git a/apps/calendar/ajax/updatecalendar.php b/apps/calendar/ajax/updatecalendar.php index 5cf48d50ea1..a81644ded17 100644 --- a/apps/calendar/ajax/updatecalendar.php +++ b/apps/calendar/ajax/updatecalendar.php @@ -15,7 +15,7 @@ OC_JSON::checkLoggedIn(); OC_JSON::checkAppEnabled('calendar'); $calendarid = $_POST['id']; -OC_Calendar_Calendar::editCalendar($calendarid, $_POST['name'], $_POST['description'], null, null, null, $_POST['color']); +OC_Calendar_Calendar::editCalendar($calendarid, $_POST['name'], null, null, null, $_POST['color']); OC_Calendar_Calendar::setCalendarActive($calendarid, $_POST['active']); $calendar = OC_Calendar_Calendar::findCalendar($calendarid); $tmpl = new OC_Template('calendar', 'part.choosecalendar.rowfields'); diff --git a/apps/calendar/appinfo/database.xml b/apps/calendar/appinfo/database.xml index bf92179c40b..7f7b6457559 100644 --- a/apps/calendar/appinfo/database.xml +++ b/apps/calendar/appinfo/database.xml @@ -154,12 +154,6 @@ </field> <field> - <name>description</name> - <type>clob</type> - <notnull>false</notnull> - </field> - - <field> <name>calendarorder</name> <type>integer</type> <default>0</default> diff --git a/apps/calendar/css/style.css b/apps/calendar/css/style.css index 5e19b88f55a..80d29ca8974 100644 --- a/apps/calendar/css/style.css +++ b/apps/calendar/css/style.css @@ -5,7 +5,7 @@ * See the COPYING-README file. */ -#view {margin-left: 10px; float: left; font-size: 12px;} +#view { float: left; font-size: 12px; height: 100%;} #datecontrol {text-align: center;} #datecontrol_left{font-size: 12px;} #datecontrol_right{font-size: 12px;} @@ -17,7 +17,6 @@ #editentry_dialog {display: none;} #parsingfail_dialog{display: none;} -#view {margin-left: 10px; float: left; font-size: 12px; height: 100%;} #calendar_holder {height: 100%; width: 100%;} #onedayview, #oneweekview, #fourweeksview, #onemonthview, #listview {display: none; position: absolute;bottom: 0; right: 0; left: 160px; top: 80px;} #onedayview table {margin: 0; padding: 0; width: 100%; height: 100%; border-spacing:1px; background: #EEEEEE;} @@ -59,5 +58,5 @@ color:#A9A9A9; select#category{width:140px;} button.category{margin:0 3px;} -.calendar-colorpicker-color{display:inline-block;width:20px;height:20px;margin-right:2px;cursor:pointer;} -.calendar-colorpicker-color.active{background-image:url("../../../core/img/jquery-ui/ui-icons_222222_256x240.png");background-position:-62px -143px;} +.calendar-colorpicker-color{display:inline-block;width:20px;height:20px;margin-right:2px;cursor:pointer;border:2px solid transparent;} +.calendar-colorpicker-color.active{border:2px solid black;} diff --git a/apps/calendar/import.php b/apps/calendar/import.php index 46822349448..211791f551b 100644 --- a/apps/calendar/import.php +++ b/apps/calendar/import.php @@ -23,7 +23,7 @@ if($_GET["import"] == "existing"){ $filename = "/" . $_GET["file"]; } }else{ - $id = OC_Calendar_Calendar::addCalendar(OC_User::getUser(), $_POST['calname'], $_POST['description']); + $id = OC_Calendar_Calendar::addCalendar(OC_User::getUser(), $_POST['calname']); OC_Calendar_Calendar::setCalendarActive($id, 1); $calid = $id; if($_POST["path"] != ""){ diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js index 131325007a0..87954b7aac6 100644 --- a/apps/calendar/js/calendar.js +++ b/apps/calendar/js/calendar.js @@ -491,8 +491,6 @@ Calendar={ // based on jquery-colorpicker at jquery.webspirited.com var obj = $('.colorpicker', container); var picker = $('<div class="calendar-colorpicker"></div>'); - var size = 20; - //build an array of colors var colors = {}; $(obj).children('option').each(function(i, elm) { @@ -501,7 +499,7 @@ Calendar={ colors[i].label = $(elm).text(); }); for (var i in colors) { - picker.append('<span class="calendar-colorpicker-color ' + (colors[i].color == $(obj).children(":selected").val() ? ' active' : '') + '" rel="' + colors[i].label + '" style="background-color: #' + colors[i].color + '; width: ' + size + 'px; height: ' + size + 'px;"></span>'); + picker.append('<span class="calendar-colorpicker-color ' + (colors[i].color == $(obj).children(":selected").val() ? ' active' : '') + '" rel="' + colors[i].label + '" style="background-color: #' + colors[i].color + ';"></span>'); } picker.delegate(".calendar-colorpicker-color", "click", function() { $(obj).val($(this).attr('rel')); diff --git a/apps/calendar/lib/calendar.php b/apps/calendar/lib/calendar.php index 4549af8b3c0..959cb14bf8f 100644 --- a/apps/calendar/lib/calendar.php +++ b/apps/calendar/lib/calendar.php @@ -30,7 +30,6 @@ * uri VARCHAR(100), * active INTEGER UNSIGNED NOT NULL DEFAULT '0', * ctag INTEGER UNSIGNED NOT NULL DEFAULT '0', - * description TEXT, * calendarorder INTEGER UNSIGNED NOT NULL DEFAULT '0', * calendarcolor VARCHAR(10), * timezone TEXT, @@ -94,14 +93,13 @@ class OC_Calendar_Calendar{ * @brief Creates a new calendar * @param string $userid * @param string $name - * @param string $description * @param string $components Default: "VEVENT,VTODO,VJOURNAL" * @param string $timezone Default: null * @param integer $order Default: 1 * @param string $color Default: null * @return insertid */ - public static function addCalendar($userid,$name,$description,$components='VEVENT,VTODO,VJOURNAL',$timezone=null,$order=0,$color=null){ + public static function addCalendar($userid,$name,$components='VEVENT,VTODO,VJOURNAL',$timezone=null,$order=0,$color=null){ $all = self::allCalendars($userid); $uris = array(); foreach($all as $i){ @@ -110,8 +108,8 @@ class OC_Calendar_Calendar{ $uri = self::createURI($name, $uris ); - $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_calendars (userid,displayname,uri,ctag,description,calendarorder,calendarcolor,timezone,components) VALUES(?,?,?,?,?,?,?,?,?)' ); - $result = $stmt->execute(array($userid,$name,$uri,1,$description,$order,$color,$timezone,$components)); + $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_calendars (userid,displayname,uri,ctag,calendarorder,calendarcolor,timezone,components) VALUES(?,?,?,?,?,?,?,?)' ); + $result = $stmt->execute(array($userid,$name,$uri,1,$order,$color,$timezone,$components)); return OC_DB::insertid(); } @@ -121,18 +119,17 @@ class OC_Calendar_Calendar{ * @param string $principaluri * @param string $uri * @param string $name - * @param string $description * @param string $components * @param string $timezone * @param integer $order * @param string $color * @return insertid */ - public static function addCalendarFromDAVData($principaluri,$uri,$name,$description,$components,$timezone,$order,$color){ + public static function addCalendarFromDAVData($principaluri,$uri,$name,$components,$timezone,$order,$color){ $userid = self::extractUserID($principaluri); - $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_calendars (userid,displayname,uri,ctag,description,calendarorder,calendarcolor,timezone,components) VALUES(?,?,?,?,?,?,?,?,?)' ); - $result = $stmt->execute(array($userid,$name,$uri,1,$description,$order,$color,$timezone,$components)); + $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_calendars (userid,displayname,uri,ctag,calendarorder,calendarcolor,timezone,components) VALUES(?,?,?,?,?,?,?,?)' ); + $result = $stmt->execute(array($userid,$name,$uri,1,$order,$color,$timezone,$components)); return OC_DB::insertid(); } @@ -141,7 +138,6 @@ class OC_Calendar_Calendar{ * @brief Edits a calendar * @param integer $id * @param string $name Default: null - * @param string $description Default: null * @param string $components Default: null * @param string $timezone Default: null * @param integer $order Default: null @@ -150,20 +146,19 @@ class OC_Calendar_Calendar{ * * Values not null will be set */ - public static function editCalendar($id,$name=null,$description=null,$components=null,$timezone=null,$order=null,$color=null){ + public static function editCalendar($id,$name=null,$components=null,$timezone=null,$order=null,$color=null){ // Need these ones for checking uri $calendar = self::findCalendar($id); // Keep old stuff if(is_null($name)) $name = $calendar['name']; - if(is_null($description)) $description = $calendar['description']; if(is_null($components)) $components = $calendar['components']; if(is_null($timezone)) $timezone = $calendar['timezone']; if(is_null($order)) $order = $calendar['calendarorder']; if(is_null($color)) $color = $calendar['color']; - $stmt = OC_DB::prepare( 'UPDATE *PREFIX*calendar_calendars SET displayname=?,description=?,calendarorder=?,calendarcolor=?,timezone=?,components=?,ctag=ctag+1 WHERE id=?' ); - $result = $stmt->execute(array($name,$description,$order,$color,$timezone,$components,$id)); + $stmt = OC_DB::prepare( 'UPDATE *PREFIX*calendar_calendars SET displayname=?,calendarorder=?,calendarcolor=?,timezone=?,components=?,ctag=ctag+1 WHERE id=?' ); + $result = $stmt->execute(array($name,$order,$color,$timezone,$components,$id)); return true; } diff --git a/apps/calendar/lib/connector_sabre.php b/apps/calendar/lib/connector_sabre.php index b94e6fb3ae7..13a542fccad 100644 --- a/apps/calendar/lib/connector_sabre.php +++ b/apps/calendar/lib/connector_sabre.php @@ -102,13 +102,12 @@ class OC_Connector_Sabre_CalDAV extends Sabre_CalDAV_Backend_Abstract { } if(!isset($newValues['displayname'])) $newValues['displayname'] = 'unnamed'; - if(!isset($newValues['description'])) $newValues['description'] = ''; if(!isset($newValues['components'])) $newValues['components'] = 'VEVENT,VTODO'; if(!isset($newValues['timezone'])) $newValues['timezone'] = null; if(!isset($newValues['calendarorder'])) $newValues['calendarorder'] = 0; if(!isset($newValues['calendarcolor'])) $newValues['calendarcolor'] = null; - return OC_Calendar_Calendar::addCalendarFromDAVData($principalUri,$calendarUri,$newValues['displayname'],$newValues['description'],$newValues['components'],$newValues['timezone'],$newValues['calendarorder'],$newValues['calendarcolor']); + return OC_Calendar_Calendar::addCalendarFromDAVData($principalUri,$calendarUri,$newValues['displayname'],$newValues['components'],$newValues['timezone'],$newValues['calendarorder'],$newValues['calendarcolor']); } /** @@ -191,12 +190,11 @@ class OC_Connector_Sabre_CalDAV extends Sabre_CalDAV_Backend_Abstract { // Success if(!isset($newValues['displayname'])) $newValues['displayname'] = null; - if(!isset($newValues['description'])) $newValues['description'] = null; if(!isset($newValues['timezone'])) $newValues['timezone'] = null; if(!isset($newValues['calendarorder'])) $newValues['calendarorder'] = null; if(!isset($newValues['calendarcolor'])) $newValues['calendarcolor'] = null; - OC_Calendar_Calendar::editCalendar($calendarId,$newValues['displayname'],$newValues['description'],null,$newValues['timezone'],$newValues['calendarorder'],$newValues['calendarcolor']); + OC_Calendar_Calendar::editCalendar($calendarId,$newValues['displayname'],null,$newValues['timezone'],$newValues['calendarorder'],$newValues['calendarcolor']); return true; diff --git a/apps/calendar/templates/part.editcalendar.php b/apps/calendar/templates/part.editcalendar.php index c2c22913bee..b4ff573ec81 100644 --- a/apps/calendar/templates/part.editcalendar.php +++ b/apps/calendar/templates/part.editcalendar.php @@ -26,12 +26,6 @@ </tr> <?php endif; ?> <tr> - <th><?php echo $l->t('Description') ?></th> - <td> - <textarea id="description_<?php echo $_['calendar']['id'] ?>"><?php echo $_['calendar']['description'] ?></textarea> - </td> -</tr> -<tr> <th><?php echo $l->t('Calendar color') ?></th> <td> <select id="calendarcolor_<?php echo $_['calendar']['id'] ?>" class="colorpicker"> diff --git a/apps/calendar/templates/part.import.php b/apps/calendar/templates/part.import.php index 37493674371..b8805e6b6ef 100644 --- a/apps/calendar/templates/part.import.php +++ b/apps/calendar/templates/part.import.php @@ -31,11 +31,6 @@ foreach($calendars as $calendar){ <input id="displayname" type="text" value=""> </td> </tr> -<th><?php echo $l->t('Description') ?></th> -<td> -<textarea id="description"></textarea> -</td> -</tr> </table> <!-- end of modified part --> <br><br> @@ -65,8 +60,7 @@ function importcal(importtype){ } if(importtype == "new"){ var calname = $("#displayname").val(); - var description = $("#description").val(); - $.post(OC.filePath('calendar', '', 'import.php'), {'import':'new', 'calname':calname, 'description':description, 'path':path, 'file':file}, function(){ + $.post(OC.filePath('calendar', '', 'import.php'), {'import':'new', 'calname':calname, 'path':path, 'file':file}, function(){ $("#importdialog").dialog('destroy').remove(); $("#importdialogholder").remove(); }); diff --git a/apps/calendar/templates/settings.php b/apps/calendar/templates/settings.php index 19a1a543b46..56fb55d235c 100644 --- a/apps/calendar/templates/settings.php +++ b/apps/calendar/templates/settings.php @@ -6,39 +6,39 @@ * later. * See the COPYING-README file. */ -OC_UTIL::addScript('', 'jquery.multiselect'); -OC_UTIL::addStyle('', 'jquery.multiselect'); ?> <form id="calendar"> <fieldset class="personalblock"> - <table class="nostyle"> - <tr><td><label for="timezone" class="bold"><?php echo $l->t('Timezone');?></label></td><td><select style="display: none;" id="timezone" name="timezone"> + <table class="nostyle"> + <tr><td><label for="timezone" class="bold"><?php echo $l->t('Timezone');?></label></td><td><select style="display: none;" id="timezone" name="timezone"> <?php - $continent = ''; - foreach($_['timezones'] as $timezone): - if ( preg_match( '/^(America|Antartica|Arctic|Asia|Atlantic|Europe|Indian|Pacific)\//', $timezone ) ): - $ex=explode('/', $timezone, 2);//obtain continent,city - if ($continent!=$ex[0]): - if ($continent!="") echo '</optgroup>'; - echo '<optgroup label="'.$ex[0].'">'; - endif; - $city=$ex[1]; - $continent=$ex[0]; - echo '<option value="'.$timezone.'"'.($_['timezone'] == $timezone?' selected="selected"':'').'>'.$city.'</option>'; - endif; + $continent = ''; + foreach($_['timezones'] as $timezone): + $ex=explode('/', $timezone, 2);//obtain continent,city + if (!isset($ex[1])) { + $ex[1] = $ex[0]; + $ex[0] = "Other"; + } + if ($continent!=$ex[0]): + if ($continent!="") echo '</optgroup>'; + echo '<optgroup label="'.$ex[0].'">'; + endif; + $city=strtr($ex[1], '_', ' '); + $continent=$ex[0]; + echo '<option value="'.$timezone.'"'.($_['timezone'] == $timezone?' selected="selected"':'').'>'.$city.'</option>'; endforeach;?> - </select></td></tr> + </select></td></tr> - <tr><td><label for="timeformat" class="bold"><?php echo $l->t('Timeformat');?></label></td><td> - <select style="display: none;" id="timeformat" title="<?php echo "timeformat"; ?>" name="timeformat"> - <option value="24" id="24h"><?php echo $l->t("24h"); ?></option> - <option value="ampm" id="ampm"><?php echo $l->t("12h"); ?></option> - </select> - </td></tr> + <tr><td><label for="timeformat" class="bold"><?php echo $l->t('Timeformat');?></label></td><td> + <select style="display: none;" id="timeformat" title="<?php echo "timeformat"; ?>" name="timeformat"> + <option value="24" id="24h"><?php echo $l->t("24h"); ?></option> + <option value="ampm" id="ampm"><?php echo $l->t("12h"); ?></option> + </select> + </td></tr> - </table> + </table> - <?php echo $l->t('Calendar CalDAV syncing address:');?> - <?php echo OC_Helper::linkTo('apps/calendar', 'caldav.php', null, true); ?><br /> + <?php echo $l->t('Calendar CalDAV syncing address:');?> + <?php echo OC_Helper::linkTo('apps/calendar', 'caldav.php', null, true); ?><br /> </fieldset> </form> diff --git a/apps/contacts/ajax/addcard.php b/apps/contacts/ajax/addcard.php index ee95513732d..e7b56a7bf00 100644 --- a/apps/contacts/ajax/addcard.php +++ b/apps/contacts/ajax/addcard.php @@ -37,16 +37,28 @@ if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ } $fn = $_POST['fn']; +$values = $_POST['value']; +$parameters = $_POST['parameters']; $vcard = new Sabre_VObject_Component('VCARD'); $vcard->add(new Sabre_VObject_Property('FN',$fn)); $vcard->add(new Sabre_VObject_Property('UID',OC_Contacts_VCard::createUID())); +foreach(array('ADR', 'TEL', 'EMAIL', 'ORG') as $propname){ + $value = $values[$propname]; + if (isset($parameters[$propname])){ + $prop_parameters = $parameters[$propname]; + } else { + $prop_parameters = array(); + } + OC_Contacts_VCard::addVCardProperty($vcard, $propname, $value, $prop_parameters); +} $id = OC_Contacts_VCard::add($aid,$vcard->serialize()); $details = OC_Contacts_VCard::structureContact($vcard); +$name = $details['FN'][0]['value']; $tmpl = new OC_Template('contacts','part.details'); $tmpl->assign('details',$details); $tmpl->assign('id',$id); $page = $tmpl->fetchPage(); -OC_JSON::success(array('data' => array( 'id' => $id, 'page' => $page ))); +OC_JSON::success(array('data' => array( 'id' => $id, 'name' => $name, 'page' => $page ))); diff --git a/apps/contacts/ajax/addproperty.php b/apps/contacts/ajax/addproperty.php index 68c4f65fa5c..101cfabbe84 100644 --- a/apps/contacts/ajax/addproperty.php +++ b/apps/contacts/ajax/addproperty.php @@ -53,7 +53,7 @@ $name = $_POST['name']; $value = $_POST['value']; $parameters = isset($_POST['parameteres'])?$_POST['parameters']:array(); -OC_Contacts_VCard::addVCardProperty($vcard, $name, $value, $parameters); +$property = OC_Contacts_VCard::addVCardProperty($vcard, $name, $value, $parameters); $line = count($vcard->children) - 1; $checksum = md5($property->serialize()); diff --git a/apps/contacts/css/styles.css b/apps/contacts/css/styles.css index 1f95fdb2ad4..c1abd0efb62 100644 --- a/apps/contacts/css/styles.css +++ b/apps/contacts/css/styles.css @@ -1,2 +1,3 @@ .contacts_details_left {text-align:right;vertical-align:top;padding:2px;} .contacts_details_right {text-align:left;vertical-align:top;padding:2px;} +#contacts_deletecard {position:absolute;top:15px;right:0;} diff --git a/apps/contacts/js/interface.js b/apps/contacts/js/interface.js index 47e9bb10b1f..2f4a736f553 100644 --- a/apps/contacts/js/interface.js +++ b/apps/contacts/js/interface.js @@ -1,12 +1,5 @@ $(document).ready(function(){ /*------------------------------------------------------------------------- - * Actions for startup - *-----------------------------------------------------------------------*/ - if( $('#leftcontent li').length > 0 ){ - $('#leftcontent li').first().addClass('active'); - } - - /*------------------------------------------------------------------------- * Event handlers *-----------------------------------------------------------------------*/ $('#leftcontent li').live('click',function(){ @@ -75,7 +68,7 @@ $(document).ready(function(){ $('#contacts_addpropertyform input[type="submit"]').live('click',function(){ $.post('ajax/addproperty.php',$('#contacts_addpropertyform').serialize(),function(jsondata){ if(jsondata.status == 'success'){ - $('#contacts_cardoptions').before(jsondata.data.page); + $('#contacts_details').append(jsondata.data.page); $('#contacts_addpropertyform').remove(); $('#contacts_addcontactsparts').remove(); } @@ -129,7 +122,7 @@ $(document).ready(function(){ }); $('#contacts_setpropertyform input[type="submit"]').live('click',function(){ - $.post('ajax/setproperty.php',$('#contacts_setpropertyform').serialize(),function(jsondata){ + $.post('ajax/setproperty.php',$(this).parent('form').serialize(),function(jsondata){ if(jsondata.status == 'success'){ $('.contacts_details_property[data-checksum="'+jsondata.data.oldchecksum+'"]').replaceWith(jsondata.data.page); } diff --git a/apps/contacts/lib/vcard.php b/apps/contacts/lib/vcard.php index bff2897384f..9f15cf4bc37 100644 --- a/apps/contacts/lib/vcard.php +++ b/apps/contacts/lib/vcard.php @@ -290,6 +290,7 @@ class OC_Contacts_VCard{ } $vcard->add($property); + return $property; } /** diff --git a/apps/contacts/templates/index.php b/apps/contacts/templates/index.php index 6d67584b29e..98ebc1b0b36 100644 --- a/apps/contacts/templates/index.php +++ b/apps/contacts/templates/index.php @@ -14,5 +14,5 @@ OC_Util::addStyle('contacts','styles'); </ul> </div> <div id="rightcontent" class="rightcontent" data-id="<?php echo $_['id']; ?>"> - <?php echo $this->inc("part.details"); ?> + <?php echo $this->inc("part.addcardform"); ?> </div> diff --git a/apps/contacts/templates/part.details.php b/apps/contacts/templates/part.details.php index 254d54a4e8e..438f84d45d4 100644 --- a/apps/contacts/templates/part.details.php +++ b/apps/contacts/templates/part.details.php @@ -1,5 +1,5 @@ <?php if(array_key_exists('FN',$_['details'])): ?> - <table> + <table id="contacts_details"> <?php if(isset($_['details']['PHOTO'])): // Emails first ?> <tr class="contacts_details_property"> <td class="contacts_details_left"> </td> @@ -28,7 +28,7 @@ <?php endforeach; ?> </table> <form> - <input type="button" id="contacts_deletecard" value="<?php echo $l->t('Delete');?>"> + <img class="svg action" id="contacts_deletecard" src="<?php echo image_path('', 'actions/delete.svg'); ?>" title="<?php echo $l->t('Delete contact');?>" /> <input type="button" id="contacts_addproperty" value="<?php echo $l->t('Add Property');?>"> </form> <?php endif; ?> diff --git a/apps/contacts/templates/part.property.php b/apps/contacts/templates/part.property.php index 3469f53b0da..31fb187a0d3 100644 --- a/apps/contacts/templates/part.property.php +++ b/apps/contacts/templates/part.property.php @@ -1,8 +1,8 @@ <tr class="contacts_details_property" data-checksum="<?php echo $_['property']['checksum']; ?>"> <?php if($_['property']['name'] == 'FN'): ?> - <td class="contacts_details_left"><?php echo $l->t('Name'); ?></td> + <td class="contacts_details_left"></td> <td class="contacts_details_right"> - <?php echo $_['property']['value']; ?> + <strong><?php echo $_['property']['value']; ?></strong> <span style="display:none;" data-use="edit"><img class="svg action" src="<?php echo image_path('', 'actions/rename.svg'); ?>" /></span> </td> <?php elseif($_['property']['name'] == 'BDAY'): ?> diff --git a/apps/files_sharing/get.php b/apps/files_sharing/get.php index 083f48e1127..ca95a68c6ce 100644 --- a/apps/files_sharing/get.php +++ b/apps/files_sharing/get.php @@ -30,8 +30,9 @@ if ($source !== false) { foreach (OC_Files::getdirectorycontent($source) as $i) { $i['date'] = OC_Util::formatDate($i['mtime'] ); if ($i['type'] == 'file') { - $i['extention'] = substr($i['name'], strrpos($i['name'], ".")); - $i['basename'] = substr($i['name'], 0, strrpos($i['name'], ".")); + $fileinfo = pathinfo($i['name']); + $i['basename'] = $fileinfo['filename']; + $i['extention'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : ''; } $i['directory'] = substr($i['directory'], $rootLength); if ($i['directory'] == "/") { @@ -70,7 +71,7 @@ if ($source !== false) { header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Pragma: public"); - header("Content-Disposition: filename=".basename($source)); + header('Content-Disposition: filename="'.basename($source).'"'); header("Content-Type: " . $mimetype); header("Content-Length: " . OC_Filesystem::filesize($source)); //download the file diff --git a/apps/gallery/ajax/cover.php b/apps/gallery/ajax/cover.php index 44d73028510..d83f4daaa52 100644 --- a/apps/gallery/ajax/cover.php +++ b/apps/gallery/ajax/cover.php @@ -1,5 +1,7 @@ <?php require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('gallery'); function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height) { //$imgSrc is a FILE - Returns an image resource. //getting the image dimensions @@ -36,11 +38,6 @@ function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height) { //$imgSr return $thumb; } -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => 'You need to log in.'))); - exit(); -} $box_size = 200; $album_name = $_GET['album']; $x = $_GET['x']; diff --git a/apps/gallery/ajax/createAlbum.php b/apps/gallery/ajax/createAlbum.php index 3a490bdc3bd..610f761b72a 100644 --- a/apps/gallery/ajax/createAlbum.php +++ b/apps/gallery/ajax/createAlbum.php @@ -1,14 +1,11 @@ <?php require_once('../../../lib/base.php'); - -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => 'You need to log in.'))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('gallery'); $stmt = OC_DB::prepare('INSERT INTO *PREFIX*gallery_albums ("uid_owner", "album_name") VALUES ("'.OC_User::getUser().'", "'.$_GET['album_name'].'")'); $stmt->execute(array()); -echo json_encode(array( 'status' => 'success', 'name' => $_GET['album_name'])); +OC_JSON::success(array('name' => $_GET['album_name'])); ?> diff --git a/apps/gallery/ajax/getAlbums.php b/apps/gallery/ajax/getAlbums.php index 2829dae81f3..38bea74636f 100644 --- a/apps/gallery/ajax/getAlbums.php +++ b/apps/gallery/ajax/getAlbums.php @@ -1,10 +1,7 @@ <?php require_once('../../../lib/base.php'); - -if (!OC_User::IsLoggedIn()) { - echo json_encode(array('status' => 'error', 'message' => 'You need to log in')); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('gallery'); $a = array(); $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_albums WHERE `uid_owner` = ?'); @@ -17,6 +14,6 @@ while ($r = $result->fetchRow()) { $a[] = array('name' => $album_name, 'numOfItems' => min($tmp_res->numRows(), 10)); } -echo json_encode(array('status'=>'success', 'albums'=>$a)); +OC_JSON::success(array('albums'=>$a)); ?> diff --git a/apps/gallery/ajax/getCovers.php b/apps/gallery/ajax/getCovers.php index 57737f2fdd6..d84bf2a7903 100644 --- a/apps/gallery/ajax/getCovers.php +++ b/apps/gallery/ajax/getCovers.php @@ -1,5 +1,7 @@ <?php require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('gallery'); function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height, $tgtImg, $shift) { //getting the image dimensions @@ -38,11 +40,6 @@ function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height, $tgtImg, $ imagedestroy($myImage); } -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => 'You need to log in.'))); - exit(); -} $box_size = 200; $album_name= $_GET['album_name']; @@ -61,6 +58,12 @@ while (($i = $result->fetchRow()) && $counter < $numOfItems) { header('Content-Type: image/png'); +$offset = 3600 * 24; +// calc the string in GMT not localtime and add the offset +header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT"); +header('Cache-Control: max-age=3600, must-revalidate'); +header('Pragma: public'); + imagepng($targetImg); imagedestroy($targetImg); ?> diff --git a/apps/gallery/ajax/scanForAlbums.php b/apps/gallery/ajax/scanForAlbums.php index a04ad62b1bf..de0b141a367 100644 --- a/apps/gallery/ajax/scanForAlbums.php +++ b/apps/gallery/ajax/scanForAlbums.php @@ -1,14 +1,11 @@ <?php require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('gallery'); require_once('../lib_scanner.php'); -if (!OC_User::IsLoggedIn()) { - echo json_encode(array('status' => 'error', 'message' => 'You need to log in')); - exit(); -} - -echo json_encode(array( 'status' => 'success', 'albums' => OC_GALLERY_SCANNER::scan(''))); -//echo json_encode(array('status' => 'success', 'albums' => array(array('name' => 'test', 'imagesCount' => 1, 'images' => array('dupa'))))); +OC_JSON::success(array('albums' => OC_GALLERY_SCANNER::scan(''))); +//OC_JSON::success(array('albums' => array(array('name' => 'test', 'imagesCount' => 1, 'images' => array('dupa'))))); ?> diff --git a/apps/gallery/ajax/thumbnail.php b/apps/gallery/ajax/thumbnail.php index db428eeff34..f24782390f6 100644 --- a/apps/gallery/ajax/thumbnail.php +++ b/apps/gallery/ajax/thumbnail.php @@ -1,5 +1,7 @@ <?php require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('gallery'); function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height) { //$imgSrc is a FILE - Returns an image resource. //getting the image dimensions @@ -40,11 +42,6 @@ function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height) { //$imgSr return $thumb; } -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => 'You need to log in.'))); - exit(); -} $box_size = 200; $img = $_GET['img']; diff --git a/apps/gallery/appinfo/app.php b/apps/gallery/appinfo/app.php index 5760bb149d8..8f855c470e5 100644 --- a/apps/gallery/appinfo/app.php +++ b/apps/gallery/appinfo/app.php @@ -8,7 +8,7 @@ OC_App::addNavigationEntry( array( 'id' => 'gallery_index', 'order' => 20, 'href' => OC_Helper::linkTo('gallery', 'index.php'), - 'icon' => OC_Helper::linkTo('', 'core/img/filetypes/image.png'), + 'icon' => OC_Helper::imagePath('core', 'places/picture.svg'), 'name' => 'Gallery')); class OC_GallerySearchProvider extends OC_Search_Provider{ @@ -17,7 +17,7 @@ OC_App::addNavigationEntry( array( $result = $stmt->execute(array(OC_User::getUser(),'%'.$query.'%')); $results=array(); while($row=$result->fetchRow()){ - $results[]=new OC_Search_Result($row['album_name'],'',OC_Helper::linkTo( 'apps/gallery', 'index.php?view='.$row['album_name']),'Galleries'); + $results[]=new OC_Search_Result($row['album_name'],'',OC_Helper::linkTo('apps/gallery', 'index.php?view='.$row['album_name']),'Galleries'); } return $results; } diff --git a/apps/gallery/index.php b/apps/gallery/index.php index c8d5892e555..87fdafcf13c 100644 --- a/apps/gallery/index.php +++ b/apps/gallery/index.php @@ -2,6 +2,7 @@ require_once('../../lib/base.php'); OC_Util::checkLoggedIn(); +OC_Util::checkAppEnabled('gallery'); OC_App::setActiveNavigationEntry( 'gallery_index' ); diff --git a/apps/media/appinfo/app.php b/apps/media/appinfo/app.php index dd1a830a94b..475a33500f4 100644 --- a/apps/media/appinfo/app.php +++ b/apps/media/appinfo/app.php @@ -29,5 +29,5 @@ OC_APP::registerPersonal('media','settings'); OC_App::register( array( 'order' => 3, 'id' => 'media', 'name' => 'Media' )); -OC_App::addNavigationEntry( array( 'id' => 'media_index', 'order' => 2, 'href' => OC_Helper::linkTo( 'media', 'index.php' ), 'icon' => OC_Helper::imagePath( 'core', 'filetypes/audio.svg' ), 'name' => $l->t('Music') )); +OC_App::addNavigationEntry(array('id' => 'media_index', 'order' => 2, 'href' => OC_Helper::linkTo('media', 'index.php'), 'icon' => OC_Helper::imagePath('core', 'places/music.svg'), 'name' => $l->t('Music'))); ?> diff --git a/apps/media/css/music.css b/apps/media/css/music.css index 8575e6334a5..67d56075194 100644 --- a/apps/media/css/music.css +++ b/apps/media/css/music.css @@ -1,6 +1,6 @@ #controls ul.jp-controls { padding:0; } #controls ul.jp-controls li { display:inline; } -#controls ul.jp-controls li a { position:absolute; padding:.8em 1em; } +#controls ul.jp-controls li a { position:absolute; padding:.8em 1em .8em 0; } a.jp-play, a.jp-pause { left:2.5em; } a.jp-pause { display:none; } a.jp-next { left:5em; } @@ -39,7 +39,7 @@ tr.album td.artist { padding-left:1em; } tr.song td.artist { padding-left:2em; } .add {margin: 0 0.5em 0 0; } -#scan { position:absolute; right:13em; top:0em; } +#scan { position:absolute; right:13.5em; top:0em; } #scan .start { position:relative; display:inline; float:right; } #scan .stop { position:relative; display:inline; float:right; } #scan #scanprogressbar { position:relative; display:inline-block; width:10em; height:1.5em; top:.4em; } diff --git a/apps/media/templates/settings.php b/apps/media/templates/settings.php index da9346166e4..ac813c20850 100644 --- a/apps/media/templates/settings.php +++ b/apps/media/templates/settings.php @@ -2,6 +2,6 @@ <fieldset class="personalblock"> <strong>Media</strong><br /> Ampache address: - <?php echo OC_Helper::linkTo('apps/media', 'tomahawk.php', null, true); ?><br /> + <?php echo OC_Helper::linkTo('apps/media', '', null, true); ?><br /> </fieldset> </form> diff --git a/apps/user_openid/appinfo/info.xml b/apps/user_openid/appinfo/info.xml index 332d2199dd3..37be15abfda 100644 --- a/apps/user_openid/appinfo/info.xml +++ b/apps/user_openid/appinfo/info.xml @@ -7,5 +7,4 @@ <licence>AGPL</licence> <author>Robin Appelman</author> <require>2</require> - <default_enable/> </info> |