mirror of
https://github.com/nextcloud/server.git
synced 2026-06-08 16:26:59 -04:00
conflicts solved
This commit is contained in:
commit
e345fbd386
12 changed files with 757 additions and 70 deletions
|
|
@ -28,43 +28,674 @@ $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))
|
||||
if($select_year != substr($event['startdate'], 0, 4) && $event["repeating"] == false)
|
||||
continue;
|
||||
$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';
|
||||
}
|
||||
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';
|
||||
}
|
||||
|
||||
$return_event = array();
|
||||
foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop)
|
||||
{
|
||||
$return_event[$prop] = $event[$prop];
|
||||
$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['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);
|
||||
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++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OC_JSON::encodedPrint($return);
|
||||
|
|
|
|||
|
|
@ -59,4 +59,4 @@ 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.active{background-image:url("../../../core/img/actions/selected.svg");background-position:2px 2px;}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ OC_UTIL::addStyle('', 'jquery.multiselect');
|
|||
if ($continent!="") echo '</optgroup>';
|
||||
echo '<optgroup label="'.$ex[0].'">';
|
||||
endif;
|
||||
$city=$ex[1];
|
||||
$city=strtr($ex[1], '_', ' ');
|
||||
$continent=$ex[0];
|
||||
echo '<option value="'.$timezone.'"'.($_['timezone'] == $timezone?' selected="selected"':'').'>'.$city.'</option>';
|
||||
endforeach;?>
|
||||
|
|
|
|||
|
|
@ -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'];
|
||||
|
|
|
|||
|
|
@ -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']));
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -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'];
|
||||
|
||||
|
|
|
|||
|
|
@ -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')))));
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -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'];
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
require_once('../../lib/base.php');
|
||||
|
||||
OC_Util::checkLoggedIn();
|
||||
OC_Util::checkAppEnabled('gallery');
|
||||
OC_App::setActiveNavigationEntry( 'gallery_index' );
|
||||
|
||||
|
||||
|
|
|
|||
BIN
core/img/actions/selected.png
Normal file
BIN
core/img/actions/selected.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 276 B |
73
core/img/actions/selected.svg
Normal file
73
core/img/actions/selected.svg
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
id="svg3875"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="play.svg"
|
||||
inkscape:export-filename="/home/jancborchardt/owncloud/core/img/actions/play-add.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90">
|
||||
<defs
|
||||
id="defs3877" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="25.345359"
|
||||
inkscape:cx="10.565719"
|
||||
inkscape:cy="5.327912"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="969"
|
||||
inkscape:window-x="-2"
|
||||
inkscape:window-y="-3"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3883"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata3880">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0, -1036.36)">
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:none"
|
||||
d="m 14,1038.3622 -6,12 -6,-12 6,6.9978 z"
|
||||
id="path3086"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
Loading…
Reference in a new issue