গুগল ক্যালেন্ডার দ্বারা পড়ার জন্য আমি কীভাবে পিএইচপি ব্যবহার করতে পারি?


106

পিএইচপি আইলিতে যে কোনও গুগল অনুসন্ধান কেবল phpic ক্যালেন্ডার নিয়ে আসে এবং কীভাবে ical ফাইলগুলিকে পার্স করতে বা পড়তে হয়। আমি কেবল একটি পিএইচপি ফাইল লিখতে চাই যা আমার ডেটাবেস থেকে ইভেন্টগুলি টান করে এবং এগুলিকে ফর্ম্যাট করে লেখে।

আমার সমস্যা হ'ল আমি এমন কোথাও খুঁজে পাচ্ছি না যা দুটি প্রশ্নের উত্তর দেবে:

  1. শিরোনাম, ফাইল ফর্ম্যাট, পাদচরণ ইত্যাদি সহ সঠিক ical বিন্যাসটি কী ? অন্য কথায়, গুগল ক্যালেন্ডার ইত্যাদির মাধ্যমে সঠিকভাবে পড়ার জন্য ফাইলটির ঠিক কী থাকতে হবে?
  2. আমি যদি এই ফাইলটিকে একটি। Php এক্সটেনশন ব্যবহার করে তৈরি করি তবে আমি কীভাবে এটিকে প্রকাশ করব? আমাকে কি নতুন .ics ফাইলে লিখতে হবে? অথবা গুগল ক্যালেন্ডার ইত্যাদিতে বিষয়বস্তুগুলি সঠিক ফর্ম্যাটে থাকাকালীন কোনও। Php ফাইল পড়তে হবে? (অনেকটা স্টাইল.এসএসএসপিএফপি ফাইলের মতো সিএসএস ফাইল হিসাবে পড়তে হবে যদি বিষয়বস্তুগুলি আসলে সিএসএস ইত্যাদি হয়)

আপনারা সবাই আমাকে দিতে বা নির্দেশ করতে পারেন এমন কোনও সহায়তার প্রশংসা করা হবে !!!

উত্তর:


128

গুগল ক্যালেন্ডারে যদি *.icsএক্সটেনশানটির প্রয়োজন না হয় তবে এটি খুব সহজ হওয়া উচিত (যার জন্য সার্ভারে কিছু URL লিখতে হবে) w

$ical = "BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:" . md5(uniqid(mt_rand(), true)) . "@yourhost.test
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR";

//set correct content-type-header
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: inline; filename=calendar.ics');
echo $ical;
exit;

ক্যাচিং, পাঠ্য এনকোডিং ইত্যাদি বিষয়ে কিছু সমস্যা থাকতে পারে এমন কি আপনার ক্লায়েন্টকে ভাবতে হবে যে আপনি একটি আইক্যালেন্ডার ফাইল পরিবেশন করছেন তা আপনাকে মূলত প্রয়োজন। তবে আপনি এই সাধারণ কোডটি নিয়ে পরীক্ষা শুরু করতে পারেন।


1
ধন্যবাদ। আমি মনে করি those শিরোলেখগুলি আমি যা অনুভব করছিলাম। আমি ধরে নিই যে এই গুগল ক্যালেন্ডারটি তৈরি করার কয়েকটি চূড়ান্ত পদক্ষেপ রয়েছে, আমি যখন ইউআরএল-এর মাধ্যমে গুগল ক্যালেন্ডারে এই ফাইলটি ফিড করার চেষ্টা করি তখন এটি "ইউআরএল থেকে ক্যালেন্ডার আমদানি করে ..." বলে থাকে তবে চিরতরে স্তব্ধ থাকে। এটি পোস্ট করা কি অন্য প্রশ্ন?
rhodesjason

3
যথাযথভাবে। আমি উপরের উদাহরণটি আপডেট করেছি - এবং আমি একটি ডিটিএসটিএএমপি সম্পত্তিও যুক্ত করেছি যা কোনও ক্লায়েন্টকে ঘটনাগুলি আপডেট হওয়ার পরে তা জানায়।
স্টিফান গেহ্রিগ

1
ঠিক আছে গিরিগ, আপনি একজন বুদ্ধিমান। কাজ করেছে। ধন্যবাদ। (এখন পর্যন্ত আমি বলতে পারি গুগল ক্যালেন্ডার প্রায় তাত্ক্ষণিকভাবে আপডেট হচ্ছে))
রোডজেসন

3
যদি আমি ভুল না করে থাকি. কোনও ইভেন্ট মোছা হয়েছে কিনা তা দেখতে প্রোগ্রামগুলি ইউআইডি ব্যবহার করে। যদি কোনও পিএইচপি-স্ক্রিপ্ট সর্বদা অন্য ইউআইডি (-> এমটি_র্যান্ড) উত্পন্ন করে তবে প্রোগ্রামগুলি সর্বদা ভাবেন যে পুরো সামগ্রীটি পরিবর্তিত হয়েছে। সবকিছু বিলুপ্ত এবং সবকিছু নতুন everything ব্যক্তিগতভাবে আমি একই ইউআইডিতে লেগে থাকি যদি ঘটনাটি ডাটাবেসে একই হয় এবং কেবল রেকর্ডআইডি (এবং কিছু হোস্টের তথ্য) ব্যবহার করে। কিছু কিছু পরিবর্তিত হয়েছে তা দেখানোর জন্য ডিটিএসটিএএমপি রয়েছে। এটি যথেষ্ট হওয়া উচিত।
Seirddriezel

3
গুগল ক্যালেন্ডার করতে * .ics-এক্সটেনশন প্রয়োজন। আপনি যদি .htaccess ব্যবহার করছেন তবে আপনি এটি যোগ করে তৈরি করতে পারেন RewriteEngine on RewriteRule ^calendar.ics$ my_php_script.php [QSA]
ফ্যাঙ্কি

19

স্টিফান গেহরিগের উত্তর এবং ডেভ নো নোয়ার জবাব (এবং মিমসডশডুপের জবাব) উভয়ই ব্যক্তিগত অভিজ্ঞতার একটি নোট:

আমি যখন http://severinghaus.org/projects/icv/ এ আইসিএস যাচাইকারী ব্যবহার করেছি তখন আমার \ n এবং পিএইচপি_ইএল উভয়ই ব্যবহার করে যাচাইকরণের সমস্যা ছিল I

আমি শিখেছি যে এটি সঠিকভাবে যাচাই করার জন্য আমাকে \ r \ n ব্যবহার করতে হয়েছিল, সুতরাং এটি আমার সমাধান ছিল:

function dateToCal($timestamp) {
  return date('Ymd\Tgis\Z', $timestamp);
}

function escapeString($string) {
  return preg_replace('/([\,;])/','\\\$1', $string);
}    

    $eol = "\r\n";
    $load = "BEGIN:VCALENDAR" . $eol .
    "VERSION:2.0" . $eol .
    "PRODID:-//project/author//NONSGML v1.0//EN" . $eol .
    "CALSCALE:GREGORIAN" . $eol .
    "BEGIN:VEVENT" . $eol .
    "DTEND:" . dateToCal($end) . $eol .
    "UID:" . $id . $eol .
    "DTSTAMP:" . dateToCal(time()) . $eol .
    "DESCRIPTION:" . htmlspecialchars($title) . $eol .
    "URL;VALUE=URI:" . htmlspecialchars($url) . $eol .
    "SUMMARY:" . htmlspecialchars($description) . $eol .
    "DTSTART:" . dateToCal($start) . $eol .
    "END:VEVENT" . $eol .
    "END:VCALENDAR";

    $filename="Event-".$id;

    // Set the headers
    header('Content-type: text/calendar; charset=utf-8');
    header('Content-Disposition: attachment; filename=' . $filename);

    // Dump load
    echo $load;

এটি আমার পার্স ত্রুটিগুলি থামিয়ে দিয়েছে এবং আমার আইসিএস ফাইলগুলি যথাযথভাবে বৈধ করেছে।


শিরোনামের তথ্যগুলি ভবিষ্যতে যে কোনও ব্যক্তির কাছে FYI এর গুরুত্বপূর্ণ অংশ। বেশিরভাগ অংশে বেশিরভাগ অ্যাপ্লিকেশন এবং প্রোগ্রামগুলি নিউলাইন ব্রেক সম্পর্কে চিন্তা করবেন না। কেবল বৈধতা যাচাই করে মনে হয়। তবে সর্বাধিক গুরুত্বপূর্ণ বিষয়টি শিরোনামের অংশ। আমরা এটি না করে কিছুক্ষণ চেষ্টা করেছিলাম এবং অনেক সমস্যা হচ্ছিল।
jfreak53

1
পলায়নের জন্য কী? আমি ধরে নিয়েছি এটি একটি বা দুটি জিনিস থেকে পালাতে হবে তবে আপনি htmlspecialcharsতার পরিবর্তে এটি ব্যবহার করছেন বলে মনে হয় ।
লুক

1
দ্রুত সমাধান: তারিখ ('Ymd m এই \ জেড', $ টাইমস্ট্যাম্প)। ছের পরিবর্তে এইচ হওয়া উচিত।
পেড্রো গেস

6

একটি দুর্দান্ত এলুসিও / ical প্যাকেজ রয়েছে যা আপনাকে সহজেই আইসিস ফাইল তৈরি করতে দেয়।

এখানে ডক্স থেকে ব্যবহারের একটি উদাহরণ রয়েছে:

// 1. Create new calendar
$vCalendar = new \Eluceo\iCal\Component\Calendar('www.example.com');

// 2. Create an event
$vEvent = new \Eluceo\iCal\Component\Event();
$vEvent->setDtStart(new \DateTime('2012-12-24'));
$vEvent->setDtEnd(new \DateTime('2012-12-24'));
$vEvent->setNoTime(true);
$vEvent->setSummary('Christmas');

// Adding Timezone (optional)
$vEvent->setUseTimezone(true);

// 3. Add event to calendar
$vCalendar->addComponent($vEvent);

// 4. Set headers
header('Content-Type: text/calendar; charset=utf-8');
header('Content-Disposition: attachment; filename="cal.ics"');

// 5. Output
echo $vCalendar->render();


4

http://www.kanzaki.com/docs/ical/ এর পুরানো অনুমানটির কিছুটা বেশি পঠনযোগ্য সংস্করণ রয়েছে। এটি একটি সূচনা পয়েন্ট হিসাবে সাহায্য করে - অনেক কিছুই এখনও একই।

এছাড়াও আমার সাইট , আমার আছে

  1. দরকারী সংস্থাগুলির কয়েকটি তালিকা (সাইডবারের নীচে ডানদিকে দেখুন)
    • ical স্পেস আরএফসি 5545
    • ical টেস্টিং রিসোর্স
  2. .icsগত কয়েক বছর ধরে আমার যাত্রায় রেকর্ড করা কিছু নোট । বিশেষত, আপনি এই পুনরাবৃত্তি ইভেন্টগুলি 'চিটশিট' দরকারী বলে মনে করতে পারেন।

.ics যে ক্ষেত্রগুলির যত্ন সহকারে পরিচালনা প্রয়োজন:

  • 'সমস্ত দিন' ইভেন্ট
  • তারিখের ধরণ (টাইমজোন, ইউটিসি, বা স্থানীয় 'ভাসমান') - পার্থক্য বুঝতে nb
  • পুনরাবৃত্তি বিধি আন্তঃব্যবহার্যতা ility

2
  1. যথাযথ ical বিন্যাস: http://www.ietf.org/rfc/rfc2445.txt
  2. অনুমান অনুসারে, .ics এ শেষ হতে হবে

সম্পাদনা: আসলে আমি নিশ্চিত নই - লাইন 6186 .ics নামকরণ ফর্ম্যাটে একটি উদাহরণ দেয়, তবে এতে ইউআরএল প্যারামিটারগুলি ব্যবহার করতে পারবেন তাও বলা হয়। আমি মনে করি না যে এটি গুরুত্বপূর্ণ, যতক্ষণ না MIME টাইপ সঠিক।

সম্পাদনা করুন: উইকিপিডিয়া থেকে উদাহরণ: http://en.wikedia.org/wiki/ICalendar

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR

MIME প্রকারটি সার্ভারে কনফিগার করা আছে।


1
আমি বহুবার এই স্পেসটি পড়ার চেষ্টা করেছি কিন্তু ical ফাইলটি কেমন লাগবে এ পর্যন্ত আমি এর মাথা বা লেজ তৈরি করতে পারি না। আপনি কি আমাকে কমপক্ষে কিছু লাইনে নির্দেশ করতে পারেন যেখানে এটি আসলে .ics ফাইলটিতে মাইন্ড টাইপ ইত্যাদি রাখার ক্ষেত্রে শিরোনামটি কী হওয়া উচিত তা নিয়ে কথা বলতে শুরু করে?
rhodesjason

2

আপনি যেমন স্ট্রিংটি ফর্ম্যাট করেন বা এটি কাজ করে না তা নিশ্চিত করুন

 $content = "BEGIN:VCALENDAR\n".
            "VERSION:2.0\n".
            "PRODID:-//hacksw/handcal//NONSGML v1.0//EN\n".
            "BEGIN:VEVENT\n".
            "UID:".uniqid()."\n".
            "DTSTAMP:".$time."\n".
            "DTSTART:".$time."\n".
            "DTEND:".$time."\n".
            "SUMMARY:".$summary."\n".
            "END:VEVENT\n".
            "END:VCALENDAR";

1
PHP_EOLপরিবর্তে এটি ব্যবহার করা ভাল "\n"
হ্যাঁ ব্যারি

4
পিএইচপি_ইওলটি শেষ লাইনের জন্য পরিবেশ নির্দিষ্ট, তাই উইন্ডোতে এটি আউটপুট দেয় \r\nতাই এটি মনে রাখবেন!
ক্রিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.