function validation($data, $files) { $errors = parent::validation($data, $files); $rss = new moodle_simplepie(); // set timeout for longer than normal to try and grab the feed $rss->set_timeout(10); $rss->set_feed_url($data['url']); $rss->set_autodiscovery_cache_duration(0); $rss->set_autodiscovery_level(SIMPLEPIE_LOCATOR_NONE); $rss->init(); if ($rss->error()) { $errors['url'] = get_string('errorloadingfeed', 'block_rss_client', $rss->error()); } else { $this->title = $rss->get_title(); $this->description = $rss->get_description(); } return $errors; }
public function definition_after_data() { global $CFG, $COURSE; $mform =& $this->_form; $name = trim($mform->getElementValue('name')); $description = trim($mform->getElementValue('description')); $url = $mform->getElementValue('url'); if (empty($name) || empty($description)) { $rss = new moodle_simplepie($url); if (empty($name) && $rss->get_title()) { $mform->setDefault('name', $rss->get_title()); } if (empty($description) && $rss->get_description()) { $mform->setDefault('description', $rss->get_description()); } } if ($id = $mform->getElementValue('id')) { $mform->setDefault('autotags', implode(',', tag_get_tags_array('blog_external', $id))); $mform->freeze('url'); if ($mform->elementExists('filtertags')) { $mform->freeze('filtertags'); } // TODO change the filtertags element to a multiple select, using the tags of the external blog // Use $rss->get_channel_tags() } }
$newexternal->filtertags = !empty($data->filtertags) ? $data->filtertags : null; $newexternal->timemodified = time(); $newexternal->id = $DB->insert_record('blog_external', $newexternal); core_tag_tag::set_item_tags('core', 'blog_external', $newexternal->id, context_user::instance($newexternal->userid), $data->autotags); blog_sync_external_entries($newexternal); // Log this action. $eventparms = array('context' => $context, 'objectid' => $newexternal->id, 'other' => array('url' => $newexternal->url)); $event = \core\event\blog_external_added::create($eventparms); $event->trigger(); break; case 'edit': if ($data->id && $DB->record_exists('blog_external', array('id' => $data->id))) { $rss = new moodle_simplepie($data->url); $external->id = $data->id; $external->name = empty($data->name) ? $rss->get_title() : $data->name; $external->description = empty($data->description) ? $rss->get_description() : $data->description; $external->userid = $USER->id; $external->url = $data->url; $external->filtertags = !empty($data->filtertags) ? $data->filtertags : null; $external->timemodified = time(); $DB->update_record('blog_external', $external); // Log this action. $eventparms = array('context' => $context, 'objectid' => $external->id, 'other' => array('url' => $external->url)); $event = \core\event\blog_external_updated::create($eventparms); $event->trigger(); core_tag_tag::set_item_tags('core', 'blog_external', $external->id, context_user::instance($external->userid), $data->autotags); } else { print_error('wrongexternalid', 'blog'); } break; default: