本文整理汇总了PHP中Incident_Person_Model::save方法的典型用法代码示例。如果您正苦于以下问题:PHP Incident_Person_Model::save方法的具体用法?PHP Incident_Person_Model::save怎么用?PHP Incident_Person_Model::save使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Incident_Person_Model
的用法示例。
在下文中一共展示了Incident_Person_Model::save方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: submit
/**
* Submits a new report.
*/
public function submit()
{
$this->template->header->this_page = 'reports_submit';
$this->template->content = new View('reports_submit');
// setup and initialize form field names
$form = array('incident_title' => '', 'incident_description' => '', 'incident_date' => '', 'incident_hour' => '', 'incident_minute' => '', 'incident_ampm' => '', 'latitude' => '', 'longitude' => '', 'location_name' => '', 'country_id' => '', 'incident_category' => array(), 'incident_news' => array(), 'incident_video' => array(), 'incident_photo' => array(), 'person_first' => '', 'person_last' => '', 'person_email' => '');
//copy the form as errors, so the errors will be stored with keys corresponding to the form field names
$errors = $form;
$form_error = FALSE;
// Initialize Default Values
$form['incident_date'] = date("m/d/Y", time());
$form['incident_hour'] = "12";
$form['incident_minute'] = "00";
$form['incident_ampm'] = "pm";
// check, has the form been submitted, if so, setup validation
if ($_POST) {
// Instantiate Validation, use $post, so we don't overwrite $_POST fields with our own things
$post = Validation::factory(array_merge($_POST, $_FILES));
// Add some filters
$post->pre_filter('trim', TRUE);
// Add some rules, the input field, followed by a list of checks, carried out in order
$post->add_rules('incident_title', 'required', 'length[3,200]');
$post->add_rules('incident_description', 'required');
$post->add_rules('incident_date', 'required', 'date_mmddyyyy');
$post->add_rules('incident_hour', 'required', 'between[1,12]');
$post->add_rules('incident_minute', 'required', 'between[0,59]');
if ($_POST['incident_ampm'] != "am" && $_POST['incident_ampm'] != "pm") {
$post->add_error('incident_ampm', 'values');
}
// Validate for maximum and minimum latitude values
$post->add_rules('latitude', 'required', 'between[-90,90]');
$post->add_rules('longitude', 'required', 'between[-180,180]');
$post->add_rules('location_name', 'required', 'length[3,200]');
//XXX: Hack to validate for no checkboxes checked
if (!isset($_POST['incident_category'])) {
$post->incident_category = "";
$post->add_error('incident_category', 'required');
} else {
$post->add_rules('incident_category.*', 'required', 'numeric');
}
// Validate only the fields that are filled in
if (!empty($_POST['incident_news'])) {
foreach ($_POST['incident_news'] as $key => $url) {
if (!empty($url) and !(bool) filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) {
$post->add_error('incident_news', 'url');
}
}
}
// Validate only the fields that are filled in
if (!empty($_POST['incident_video'])) {
foreach ($_POST['incident_video'] as $key => $url) {
if (!empty($url) and !(bool) filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) {
$post->add_error('incident_video', 'url');
}
}
}
// Validate photo uploads
$post->add_rules('incident_photo', 'upload::valid', 'upload::type[gif,jpg,png]', 'upload::size[2M]');
// Validate Personal Information
if (!empty($_POST['person_first'])) {
$post->add_rules('person_first', 'length[3,100]');
}
if (!empty($_POST['person_last'])) {
$post->add_rules('person_last', 'length[3,100]');
}
if (!empty($_POST['person_email'])) {
$post->add_rules('person_email', 'email', 'length[3,100]');
}
// Test to see if things passed the rule checks
if ($post->validate()) {
// STEP 1: SAVE LOCATION
$location = new Location_Model();
$location->location_name = $post->location_name;
$location->latitude = $post->latitude;
$location->longitude = $post->longitude;
$location->location_date = date("Y-m-d H:i:s", time());
$location->save();
// STEP 2: SAVE INCIDENT
$incident = new Incident_Model();
$incident->location_id = $location->id;
$incident->user_id = 0;
$incident->incident_title = $post->incident_title;
$incident->incident_description = $post->incident_description;
$incident_date = explode("/", $post->incident_date);
// The $_POST['date'] is a value posted by form in mm/dd/yyyy format
$incident_date = $incident_date[2] . "-" . $incident_date[0] . "-" . $incident_date[1];
$incident_time = $post->incident_hour . ":" . $post->incident_minute . ":00 " . $post->incident_ampm;
$incident->incident_date = $incident_date . " " . $incident_time;
$incident->incident_dateadd = date("Y-m-d H:i:s", time());
$incident->save();
// STEP 3: SAVE CATEGORIES
foreach ($post->incident_category as $item) {
$incident_category = new Incident_Category_Model();
$incident_category->incident_id = $incident->id;
$incident_category->category_id = $item;
$incident_category->save();
}
//.........这里部分代码省略.........
示例2: _submit_report
/**
* The actual reporting -
*
* @return int
*/
private function _submit_report()
{
// setup and initialize form field names
$form = array('location_id' => '', 'incident_id' => '', 'incident_title' => '', 'incident_description' => '', 'incident_date' => '', 'incident_hour' => '', 'incident_minute' => '', 'incident_ampm' => '', 'latitude' => '', 'longitude' => '', 'location_name' => '', 'country_id' => '', 'incident_category' => '', 'incident_news' => array(), 'incident_video' => array(), 'incident_photo' => array(), 'person_first' => '', 'person_last' => '', 'person_email' => '', 'incident_active ' => '', 'incident_verified' => '', 'incident_source' => '', 'incident_information' => '');
$errors = $form;
// check, has the form been submitted, if so, setup validation
if ($_POST) {
// Instantiate Validation, use $post, so we don't overwrite $_POST fields with our own things
$post = Validation::factory(array_merge($_POST, $_FILES));
// Add some filters
$post->pre_filter('trim', TRUE);
// Add some rules, the input field, followed by a list of
//checks, carried out in order
$post->add_rules('location_id', 'numeric');
$post->add_rules('incident_id', 'required', 'numeric');
$post->add_rules('incident_title', 'required', 'length[3,200]');
$post->add_rules('incident_description', 'required');
$post->add_rules('incident_date', 'required', 'date_mmddyyyy');
$post->add_rules('incident_hour', 'required', 'between[0,23]');
if ($this->api_service->verify_array_index($_POST, 'incident_ampm')) {
if ($_POST['incident_ampm'] != "am" && $_POST['incident_ampm'] != "pm") {
$post->add_error('incident_ampm', 'values');
}
}
$post->add_rules('latitude', 'required', 'between[-90,90]');
$post->add_rules('longitude', 'required', 'between[-180,180]');
$post->add_rules('location_name', 'required', 'length[3,200]');
$post->add_rules('incident_category', 'required', 'length[1,100]');
// Validate Personal Information
if (!empty($post->person_first)) {
$post->add_rules('person_first', 'length[3,100]');
}
if (!empty($post->person_last)) {
$post->add_rules('person_last', 'length[3,100]');
}
if (!empty($post->person_email)) {
$post->add_rules('person_email', 'email', 'length[3,100]');
}
$post->add_rules('incident_active', 'required', 'between[0,1]');
$post->add_rules('incident_verified', 'required', 'length[0,1]');
$post->add_rules('incident_source', 'numeric', 'length[1,1]');
$post->add_rules('incident_information', 'numeric', 'length[1,1]');
// Test to see if things passed the rule checks
if ($post->validate()) {
$incident_id = $post->incident_id;
$location_id = $post->location_id;
// SAVE INCIDENT
// SAVE LOCATION (***IF IT DOES NOT EXIST***)
$location = new Location_Model($location_id);
$location->location_name = $post->location_name;
$location->latitude = $post->latitude;
$location->longitude = $post->longitude;
$location->location_date = date("Y-m-d H:i:s", time());
$location->save();
$incident = new Incident_Model($incident_id);
$incident->location_id = $location->id;
$incident->user_id = 0;
$incident->incident_title = $post->incident_title;
$incident->incident_description = $post->incident_description;
$incident_date = explode("/", $post->incident_date);
/**
* where the $_POST['date'] is a value posted by form in
* mm/dd/yyyy format
*/
$incident_date = $incident_date[2] . "-" . $incident_date[0] . "-" . $incident_date[1];
$incident_time = $post->incident_hour . ":" . $post->incident_minute . ":00 " . $post->incident_ampm;
$incident->incident_date = date("Y-m-d H:i:s", strtotime($incident_date . " " . $incident_time));
$incident->incident_datemodify = date("Y-m-d H:i:s", time());
// Incident Evaluation Info
$incident->incident_active = $post->incident_active;
$incident->incident_verified = $post->incident_verified;
$incident->incident_source = $post->incident_source;
$incident->incident_information = $post->incident_information;
$incident->save();
// Record Approval/Verification Action
$verify = new Verify_Model();
$verify->incident_id = $incident->id;
$verify->user_id = $_SESSION['auth_user']->id;
// Record 'Verified By' Action
$verify->verified_date = date("Y-m-d H:i:s", time());
if ($post->incident_active == 1) {
$verify->verified_status = '1';
} elseif ($post->incident_verified == 1) {
$verify->verified_status = '2';
} elseif ($post->incident_active == 1 && $post->incident_verified == 1) {
$verify->verified_status = '3';
} else {
$verify->verified_status = '0';
}
$verify->save();
// SAVE CATEGORIES
//check if data is csv or a single value.
$pos = strpos($post->incident_category, ",");
if ($pos === false) {
//for backward compactibility. will drop support for it in the future.
//.........这里部分代码省略.........
示例3: edit
/**
* Edit a report
* @param bool|int $id The id no. of the report
* @param bool|string $saved
*/
function edit($id = false, $saved = false)
{
$this->template->content = new View('admin/reports_edit');
$this->template->content->title = Kohana::lang('ui_admin.create_report');
// setup and initialize form field names
$form = array('location_id' => '', 'form_id' => '', 'locale' => '', 'incident_title' => '', 'incident_description' => '', 'incident_date' => '', 'incident_hour' => '', 'incident_minute' => '', 'incident_ampm' => '', 'latitude' => '', 'longitude' => '', 'location_name' => '', 'country_id' => '', 'incident_category' => array(), 'incident_news' => array(), 'incident_video' => array(), 'incident_photo' => array(), 'person_first' => '', 'person_last' => '', 'person_email' => '', 'custom_field' => array(), 'incident_active' => '', 'incident_verified' => '', 'incident_source' => '', 'incident_information' => '');
// copy the form as errors, so the errors will be stored with keys corresponding to the form field names
$errors = $form;
$form_error = FALSE;
if ($saved == 'saved') {
$form_saved = TRUE;
} else {
$form_saved = FALSE;
}
// Initialize Default Values
$form['locale'] = Kohana::config('locale.language');
//$form['latitude'] = Kohana::config('settings.default_lat');
//$form['longitude'] = Kohana::config('settings.default_lon');
$form['country_id'] = Kohana::config('settings.default_country');
$form['incident_date'] = date("m/d/Y", time());
$form['incident_hour'] = date('g');
$form['incident_minute'] = date('i');
$form['incident_ampm'] = date('a');
// initialize custom field array
$form['custom_field'] = $this->_get_custom_form_fields($id, '', true);
// Locale (Language) Array
$this->template->content->locale_array = Kohana::config('locale.all_languages');
// Create Categories
$this->template->content->categories = $this->_get_categories();
$this->template->content->new_categories_form = $this->_new_categories_form_arr();
// Time formatting
$this->template->content->hour_array = $this->_hour_array();
$this->template->content->minute_array = $this->_minute_array();
$this->template->content->ampm_array = $this->_ampm_array();
// Get Countries
$countries = array();
foreach (ORM::factory('country')->orderby('country')->find_all() as $country) {
// Create a list of all categories
$this_country = $country->country;
if (strlen($this_country) > 35) {
$this_country = substr($this_country, 0, 35) . "...";
}
$countries[$country->id] = $this_country;
}
$this->template->content->countries = $countries;
//GET custom forms
$forms = array();
foreach (ORM::factory('form')->find_all() as $custom_forms) {
$forms[$custom_forms->id] = $custom_forms->form_title;
}
$this->template->content->forms = $forms;
// Retrieve thumbnail photos (if edit);
//XXX: fix _get_thumbnails
$this->template->content->incident = $this->_get_thumbnails($id);
// Are we creating this report from SMS/Email/Twitter?
// If so retrieve message
if (isset($_GET['mid']) && !empty($_GET['mid'])) {
$message_id = $_GET['mid'];
$service_id = "";
$message = ORM::factory('message', $message_id);
if ($message->loaded == true && $message->message_type == 1) {
$service_id = $message->reporter->service_id;
// Has a report already been created for this Message?
if ($message->incident_id != 0) {
// Redirect to report
url::redirect('admin/reports/edit/' . $message->incident_id);
}
$this->template->content->show_messages = true;
$incident_description = $message->message;
if (!empty($message->message_detail)) {
$incident_description .= "\n\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\n" . $message->message_detail;
}
$form['incident_description'] = $incident_description;
$form['incident_date'] = date('m/d/Y', strtotime($message->message_date));
$form['incident_hour'] = date('h', strtotime($message->message_date));
$form['incident_minute'] = date('i', strtotime($message->message_date));
$form['incident_ampm'] = date('a', strtotime($message->message_date));
$form['person_first'] = $message->reporter->reporter_first;
$form['person_last'] = $message->reporter->reporter_last;
// Retrieve Last 5 Messages From this account
$this->template->content->all_messages = ORM::factory('message')->where('reporter_id', $message->reporter_id)->orderby('message_date', 'desc')->limit(5)->find_all();
} else {
$message_id = "";
$this->template->content->show_messages = false;
}
} else {
$this->template->content->show_messages = false;
}
// Are we creating this report from a Newsfeed?
if (isset($_GET['fid']) && !empty($_GET['fid'])) {
$feed_item_id = $_GET['fid'];
$feed_item = ORM::factory('feed_item', $feed_item_id);
if ($feed_item->loaded == true) {
// Has a report already been created for this Feed item?
if ($feed_item->incident_id != 0) {
//.........这里部分代码省略.........
示例4: submit
/**
* Submits a new report.
*/
public function submit($id = false, $saved = false)
{
// First, are we allowed to submit new reports?
if ( ! Kohana::config('settings.allow_reports'))
{
url::redirect(url::site().'main');
}
$this->template->header->this_page = 'reports_submit';
$this->template->content = new View('reports_submit');
// setup and initialize form field names
$form = array
(
'incident_title' => '',
'incident_description' => '',
'incident_date' => '',
'incident_hour' => '',
'incident_minute' => '',
'incident_ampm' => '',
'latitude' => '',
'longitude' => '',
'location_name' => '',
'country_id' => '',
'incident_category' => array(),
'incident_news' => array(),
'incident_video' => array(),
'incident_photo' => array(),
'person_first' => '',
'person_last' => '',
'person_email' => '',
'form_id' => '',
'custom_field' => array()
);
// copy the form as errors, so the errors will be stored with keys corresponding to the form field names
$errors = $form;
$form_error = FALSE;
if ($saved == 'saved')
{
$form_saved = TRUE;
}
else
{
$form_saved = FALSE;
}
// Initialize Default Values
$form['incident_date'] = date("m/d/Y",time());
$form['incident_hour'] = date('g');
$form['incident_minute'] = date('i');
$form['incident_ampm'] = date('a');
// initialize custom field array
$form['custom_field'] = $this->_get_custom_form_fields($id,'',true);
//GET custom forms
$forms = array();
foreach (ORM::factory('form')->find_all() as $custom_forms)
{
$forms[$custom_forms->id] = $custom_forms->form_title;
}
$this->template->content->forms = $forms;
// check, has the form been submitted, if so, setup validation
if ($_POST)
{
// Instantiate Validation, use $post, so we don't overwrite $_POST fields with our own things
$post = Validation::factory(array_merge($_POST,$_FILES));
// Add some filters
$post->pre_filter('trim', TRUE);
// Add some rules, the input field, followed by a list of checks, carried out in order
$post->add_rules('incident_title', 'required', 'length[3,200]');
$post->add_rules('incident_description', 'required');
$post->add_rules('incident_date', 'required', 'date_mmddyyyy');
$post->add_rules('incident_hour', 'required', 'between[1,12]');
$post->add_rules('incident_minute', 'required', 'between[0,59]');
if ($_POST['incident_ampm'] != "am" AND $_POST['incident_ampm'] != "pm")
{
$post->add_error('incident_ampm','values');
}
// Validate for maximum and minimum latitude values
$post->add_rules('latitude', 'required', 'between[-90,90]');
$post->add_rules('longitude', 'required', 'between[-180,180]');
$post->add_rules('location_name', 'required', 'length[3,200]');
//XXX: Hack to validate for no checkboxes checked
if (!isset($_POST['incident_category'])) {
$post->incident_category = "";
$post->add_error('incident_category', 'required');
}
else
{
//.........这里部分代码省略.........
示例5: save_personal_info
/**
* Function to save personal information
*
* @param mixed $incident_model
* @param mixed $post
*
*/
public static function save_personal_info($post, $incident)
{
// Delete Previous Entries
ORM::factory('incident_person')->where('incident_id', $incident->id)->delete_all();
$person = new Incident_Person_Model();
$person->location_id = $incident->location_id;
$person->incident_id = $incident->id;
$person->person_first = $post->person_first;
$person->person_last = $post->person_last;
$person->person_email = $post->person_email;
$person->person_date = date("Y-m-d H:i:s", time());
$person->save();
}
示例6: array
/**
* the actual reporting - ***must find a cleaner way to do this than duplicating code verbatim - modify report***
*/
function _submit()
{
// setup and initialize form field names
$form = array('incident_title' => '', 'incident_description' => '', 'incident_date' => '', 'incident_hour' => '', 'incident_minute' => '', 'incident_ampm' => '', 'latitude' => '', 'longitude' => '', 'location_name' => '', 'country_id' => '', 'incident_category' => array(), 'incident_news' => array(), 'incident_video' => array(), 'incident_photo' => array(), 'person_first' => '', 'person_last' => '', 'person_email' => '');
// copy the form as errors, so the errors will be stored with keys corresponding to the form field names
$this->messages = $form;
// check, has the form been submitted, if so, setup validation
if ($_POST) {
// Instantiate Validation, use $post, so we don't overwrite $_POST fields with our own things
$post = Validation::factory(array_merge($_POST, $_FILES));
// Add some filters
$post->pre_filter('trim', TRUE);
// Add some rules, the input field, followed by a list of checks, carried out in order
$post->add_rules('incident_title', 'required', 'length[3,200]');
$post->add_rules('incident_description', 'required');
$post->add_rules('incident_date', 'required', 'date_mmddyyyy');
$post->add_rules('incident_hour', 'required', 'between[1,12]');
//$post->add_rules('incident_minute','required','between[0,59]');
if ($this->_verifyArrayIndex($_POST, 'incident_ampm')) {
if ($_POST['incident_ampm'] != "am" && $_POST['incident_ampm'] != "pm") {
$post->add_error('incident_ampm', 'values');
}
}
$post->add_rules('latitude', 'required', 'between[-90,90]');
// Validate for maximum and minimum latitude values
$post->add_rules('longitude', 'required', 'between[-180,180]');
// Validate for maximum and minimum longitude values
$post->add_rules('location_name', 'required', 'length[3,200]');
$post->add_rules('incident_category', 'required', 'length[3,100]');
// Validate Personal Information
if (!empty($post->person_first)) {
$post->add_rules('person_first', 'length[3,100]');
}
if (!empty($post->person_last)) {
$post->add_rules('person_last', 'length[3,100]');
}
if (!empty($post->person_email)) {
$post->add_rules('person_email', 'email', 'length[3,100]');
}
// Test to see if things passed the rule checks
if ($post->validate()) {
// SAVE LOCATION (***IF IT DOES NOT EXIST***)
$location = new Location_Model();
$location->location_name = $post->location_name;
$location->latitude = $post->latitude;
$location->longitude = $post->longitude;
$location->location_date = date("Y-m-d H:i:s", time());
$location->save();
// SAVE INCIDENT
$incident = new Incident_Model();
$incident->location_id = $location->id;
$incident->user_id = 0;
$incident->incident_title = $post->incident_title;
$incident->incident_description = $post->incident_description;
$incident_date = split("/", $post->incident_date);
// where the $_POST['date'] is a value posted by form in mm/dd/yyyy format
$incident_date = $incident_date[2] . "-" . $incident_date[0] . "-" . $incident_date[1];
$incident_time = $post->incident_hour . ":" . $post->incident_minute . ":00 " . $post->incident_ampm;
$incident->incident_date = $incident_date . " " . $incident_time;
$incident->incident_dateadd = date("Y-m-d H:i:s", time());
$incident->save();
// SAVE CATEGORIES
//check if data is array or a serialized data.
if (is_array($post->incident_category)) {
$categories = $post->incident_category;
} else {
$categories = unserialize($post->incident_category);
}
if (!empty($categories) && is_array($categories)) {
foreach ($categories as $item) {
$incident_category = new Incident_Category_Model();
$incident_category->incident_id = $incident->id;
$incident_category->category_id = $item;
$incident_category->save();
}
}
// STEP 4: SAVE MEDIA
// a. News
if (!empty($post->incident_news) && is_array($post->incident_news)) {
foreach ($post->incident_news as $item) {
if (!empty($item)) {
$news = new Media_Model();
$news->location_id = $location->id;
$news->incident_id = $incident->id;
$news->media_type = 4;
// News
$news->media_link = $item;
$news->media_date = date("Y-m-d H:i:s", time());
$news->save();
}
}
}
// b. Video
if (!empty($post->incident_video) && is_array($post->incident_video)) {
foreach ($post->incident_video as $item) {
if (!empty($item)) {
$video = new Media_Model();
//.........这里部分代码省略.........
示例7: _submit
/**
* The actual reporting -
*
* @return int
*/
private function _submit()
{
// Setup and initialize form field names
$form = array('incident_title' => '', 'incident_description' => '', 'incident_date' => '', 'incident_hour' => '', 'incident_minute' => '', 'incident_ampm' => '', 'latitude' => '', 'longitude' => '', 'location_name' => '', 'country_id' => '', 'incident_category' => '', 'incident_news' => array(), 'incident_video' => array(), 'incident_photo' => array(), 'person_first' => '', 'person_last' => '', 'person_email' => '');
$this->messages = $form;
// check, has the form been submitted, if so, setup validation
if ($_POST) {
// Instantiate Validation, use $post, so we don't overwrite $_POST fields with our own things
$post = Validation::factory(array_merge($_POST, $_FILES));
//in case there's a plugin that would like to know about this new incident, I mean report
Event::run('ushahidi_action.report_submit_api', $post);
// Add some filters
$post->pre_filter('trim', TRUE);
// Add some rules, the input field, followed by a list of checks, carried out in order
$post->add_rules('incident_title', 'required', 'length[3,200]');
$post->add_rules('incident_description', 'required');
$post->add_rules('incident_date', 'required', 'date_mmddyyyy');
$post->add_rules('incident_hour', 'required', 'between[0,23]');
//$post->add_rules('incident_minute','required','between[0,59]');
if ($this->api_service->verify_array_index($_POST, 'incident_ampm')) {
if ($_POST['incident_ampm'] != "am" and $_POST['incident_ampm'] != "pm") {
$post->add_error('incident_ampm', 'values');
}
}
$post->add_rules('latitude', 'required', 'between[-90,90]');
$post->add_rules('longitude', 'required', 'between[-180,180]');
$post->add_rules('location_name', 'required', 'length[3,200]');
$post->add_rules('incident_category', 'required', 'length[1,100]');
// Validate Personal Information
if (!empty($post->person_first)) {
$post->add_rules('person_first', 'length[3,100]');
}
if (!empty($post->person_last)) {
$post->add_rules('person_last', 'length[3,100]');
}
if (!empty($post->person_email)) {
$post->add_rules('person_email', 'email', 'length[3,100]');
}
// Test to see if things passed the rule checks
if ($post->validate()) {
// SAVE LOCATION (***IF IT DOES NOT EXIST***)
$location = new Location_Model();
$location->location_name = $post->location_name;
$location->latitude = $post->latitude;
$location->longitude = $post->longitude;
$location->location_date = date("Y-m-d H:i:s", time());
$location->save();
// SAVE INCIDENT
$incident = new Incident_Model();
$incident->location_id = $location->id;
$incident->user_id = 0;
$incident->incident_title = $post->incident_title;
$incident->incident_description = $post->incident_description;
$incident_date = explode("/", $post->incident_date);
/**
* where the $_POST['date'] is a value posted by form in
* mm/dd/yyyy format
*/
$incident_date = $incident_date[2] . "-" . $incident_date[0] . "-" . $incident_date[1];
$incident_time = $post->incident_hour . ":" . $post->incident_minute . ":00 " . $post->incident_ampm;
$incident->incident_date = date("Y-m-d H:i:s", strtotime($incident_date . " " . $incident_time));
$incident->incident_dateadd = date("Y-m-d H:i:s", time());
$incident->save();
// SAVE CATEGORIES
// Check if data is csv or a single value.
$pos = strpos($post->incident_category, ",");
if ($pos === false) {
//for backward compactibility. will drop support for it in the future.
if (@unserialize($post->incident_category)) {
$categories = unserialize($post->incident_category);
} else {
$categories = array($post->incident_category);
}
} else {
$categories = explode(",", $post->incident_category);
}
if (!empty($categories) and is_array($categories)) {
foreach ($categories as $item) {
$incident_category = new Incident_Category_Model();
$incident_category->incident_id = $incident->id;
$incident_category->category_id = $item;
$incident_category->save();
}
}
// STEP 4: SAVE MEDIA
// a. News
if (!empty($post->incident_news) and is_array($post->incident_news)) {
foreach ($post->incident_news as $item) {
if (!empty($item)) {
$news = new Media_Model();
$news->location_id = $location->id;
$news->incident_id = $incident->id;
$news->media_type = 4;
// News
$news->media_link = $item;
//.........这里部分代码省略.........
示例8: edit
/**
* Edit a report
* @param bool|int $id The id no. of the report
* @param bool|string $saved
*/
function edit($id = false, $saved = false)
{
$db = new Database();
$this->template->content = new View('admin/reports_edit');
$this->template->content = View::factory('simplegroups/reports_edit');
$this->template->content->title = Kohana::lang('ui_admin.create_report');
// setup and initialize form field names
$form = array('location_id' => '', 'form_id' => '', 'locale' => '', 'incident_title' => '', 'incident_description' => '', 'incident_date' => '', 'incident_hour' => '', 'incident_minute' => '', 'incident_ampm' => '', 'latitude' => '', 'longitude' => '', 'geometry' => array(), 'location_name' => '', 'country_id' => '', 'incident_category' => array(), 'incident_group_category' => array(), 'incident_news' => array(), 'incident_video' => array(), 'incident_photo' => array(), 'incident_status' => array(), 'phone_number' => '', 'person_first' => '', 'person_last' => '', 'person_email' => '', 'custom_field' => array(), 'incident_active' => '', 'incident_verified' => '', 'incident_zoom' => '');
// copy the form as errors, so the errors will be stored with keys corresponding to the form field names
$errors = $form;
$form_error = FALSE;
$form_saved = $saved;
// Initialize Default Values
$form['locale'] = Kohana::config('locale.language');
//$form['latitude'] = Kohana::config('settings.default_lat');
//$form['longitude'] = Kohana::config('settings.default_lon');
$form['country_id'] = Kohana::config('settings.default_country');
$form['incident_date'] = date("m/d/Y", time());
$form['incident_hour'] = date('h');
$form['incident_minute'] = date('i');
$form['incident_ampm'] = date('a');
// initialize custom field array
$form['custom_field'] = $this->_get_custom_form_fields($id, '', true);
$number_of_message_sender = null;
// Locale (Language) Array
$this->template->content->locale_array = Kohana::config('locale.all_languages');
// Create Categories
$this->template->content->categories = $this->_get_categories();
$this->template->content->group_categories = $this->_get_group_categories();
$this->template->content->new_categories_form = $this->_new_categories_form_arr();
$this->template->content->group_name = $this->group->name;
// Time formatting
$this->template->content->hour_array = $this->_hour_array();
$this->template->content->minute_array = $this->_minute_array();
$this->template->content->ampm_array = $this->_ampm_array();
$this->template->content->stroke_width_array = $this->_stroke_width_array();
// Get Countries
$countries = array();
foreach (ORM::factory('country')->orderby('country')->find_all() as $country) {
// Create a list of all categories
$this_country = $country->country;
if (strlen($this_country) > 35) {
$this_country = substr($this_country, 0, 35) . "...";
}
$countries[$country->id] = $this_country;
}
$this->template->content->countries = $countries;
//GET custom forms
$forms = array();
foreach (ORM::factory('form')->where('form_active', 1)->find_all() as $custom_forms) {
$forms[$custom_forms->id] = $custom_forms->form_title;
}
$this->template->content->forms = $forms;
// Retrieve thumbnail photos (if edit);
//XXX: fix _get_thumbnails
$this->template->content->incident = $this->_get_thumbnails($id);
// Are we creating this report from SMS/Email/Twitter?
// If so retrieve message
if (isset($_GET['mid']) && !empty($_GET['mid'])) {
$message_id = $_GET['mid'];
$service_id = "";
$message = ORM::factory('message', $message_id);
//figure out the group number that sent the message
$number_items = ORM::factory("simplegroups_groups_number")->join("simplegroups_groups_message", "simplegroups_groups_message.number_id", "simplegroups_groups_numbers.id")->where("simplegroups_groups_message.message_id", $message_id)->find_all();
foreach ($number_items as $number_item) {
$number_of_message_sender = $number_item;
}
if ($message->loaded == true && $message->message_type == 1) {
$service_id = $message->reporter->service_id;
// Has a report already been created for this Message?
if ($message->incident_id != 0) {
// Redirect to report
url::redirect('admin/simplegroups/reports/edit/' . $message->incident_id);
}
$this->template->content->show_messages = true;
$incident_description = $message->message;
if (!empty($message->message_detail)) {
$incident_description .= "\n\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\n" . $message->message_detail;
}
$form['incident_description'] = $incident_description;
$form['incident_date'] = date('m/d/Y', strtotime($message->message_date));
$form['incident_hour'] = date('h', strtotime($message->message_date));
$form['incident_minute'] = date('i', strtotime($message->message_date));
$form['incident_ampm'] = date('a', strtotime($message->message_date));
$form['person_first'] = $message->reporter->reporter_first;
$form['person_last'] = $message->reporter->reporter_last;
// Does the sender of this message have a location?
if ($message->reporter->location->loaded) {
$form['latitude'] = $message->reporter->location->latitude;
$form['longitude'] = $message->reporter->location->longitude;
$form['location_name'] = $message->reporter->location->location_name;
}
// Retrieve Last 5 Messages From this account
$this->template->content->all_messages = ORM::factory('message')->where('reporter_id', $message->reporter_id)->orderby('message_date', 'desc')->limit(5)->find_all();
} else {
//.........这里部分代码省略.........
示例9: array
/**
* the actual reporting - ***must find a cleaner way to do this than duplicating code verbatim - modify report***
*/
function _submit()
{
// setup and initialize form field names
$form = array('incident_title' => '', 'incident_description' => '', 'incident_date' => '', 'incident_hour' => '', 'incident_minute' => '', 'incident_ampm' => '', 'latitude' => '', 'longitude' => '', 'location_name' => '', 'country_id' => '', 'incident_category' => '', 'incident_news' => array(), 'incident_video' => array(), 'incident_photo' => array(), 'person_first' => '', 'person_last' => '', 'person_email' => '');
//copy the form as errors, so the errors will be stored with keys corresponding to the form field names
$this->messages = $form;
// check, has the form been submitted, if so, setup validation
if ($_POST) {
// Instantiate Validation, use $post, so we don't overwrite $_POST fields with our own things
$post = Validation::factory(array_merge($_POST, $_FILES));
// Add some filters
$post->pre_filter('trim', TRUE);
// Add some rules, the input field, followed by a list of checks, carried out in order
$post->add_rules('incident_title', 'required', 'length[3,200]');
$post->add_rules('incident_description', 'required');
$post->add_rules('incident_date', 'required', 'date_mmddyyyy');
$post->add_rules('incident_hour', 'required', 'between[0,23]');
//$post->add_rules('incident_minute','required','between[0,59]');
if ($this->_verifyArrayIndex($_POST, 'incident_ampm')) {
if ($_POST['incident_ampm'] != "am" && $_POST['incident_ampm'] != "pm") {
$post->add_error('incident_ampm', 'values');
}
}
$post->add_rules('latitude', 'required', 'between[-90,90]');
// Validate for maximum and minimum latitude values
$post->add_rules('longitude', 'required', 'between[-180,180]');
// Validate for maximum and minimum longitude values
$post->add_rules('location_name', 'required', 'length[3,200]');
$post->add_rules('incident_category', 'required', 'length[1,100]');
// Validate Personal Information
if (!empty($post->person_first)) {
$post->add_rules('person_first', 'length[3,100]');
}
if (!empty($post->person_last)) {
$post->add_rules('person_last', 'length[3,100]');
}
if (!empty($post->person_email)) {
$post->add_rules('person_email', 'email', 'length[3,100]');
}
// Test to see if things passed the rule checks
if ($post->validate()) {
// SAVE LOCATION (***IF IT DOES NOT EXIST***)
$location = new Location_Model();
$location->location_name = $post->location_name;
$location->latitude = $post->latitude;
$location->longitude = $post->longitude;
$location->location_date = date("Y-m-d H:i:s", time());
$location->save();
// SAVE INCIDENT
$incident = new Incident_Model();
$incident->location_id = $location->id;
$incident->user_id = 0;
$incident->incident_title = $post->incident_title;
$incident->incident_description = $post->incident_description;
$incident_date = explode("/", $post->incident_date);
/**
* where the $_POST['date'] is a value posted by form in
* mm/dd/yyyy format
*/
$incident_date = $incident_date[2] . "-" . $incident_date[0] . "-" . $incident_date[1];
$incident_time = $post->incident_hour . ":" . $post->incident_minute . ":00 " . $post->incident_ampm;
$incident->incident_date = $incident_date . " " . $incident_time;
$incident->incident_dateadd = date("Y-m-d H:i:s", time());
$incident->save();
// SAVE CATEGORIES
//check if data is csv or a single value.
$pos = strpos($post->incident_category, ",");
if ($pos === false) {
//for backward compactibility. will drop support for it in the future.
if (@unserialize($post->incident_category)) {
$categories = unserialize($post->incident_category);
} else {
$categories = array($post->incident_category);
}
} else {
$categories = explode(",", $post->incident_category);
}
if (!empty($categories) && is_array($categories)) {
foreach ($categories as $item) {
$incident_category = new Incident_Category_Model();
$incident_category->incident_id = $incident->id;
$incident_category->category_id = $item;
$incident_category->save();
}
}
// STEP 4: SAVE MEDIA
// a. News
if (!empty($post->incident_news) && is_array($post->incident_news)) {
foreach ($post->incident_news as $item) {
if (!empty($item)) {
$news = new Media_Model();
$news->location_id = $location->id;
$news->incident_id = $incident->id;
$news->media_type = 4;
// News
$news->media_link = $item;
$news->media_date = date("Y-m-d H:i:s", time());
//.........这里部分代码省略.........
示例10: submit
/**
* Submits a new report.
*/
public function submit($id = false, $saved = false)
{
$this->template->header->this_page = 'reports_submit';
$this->template->content = new View('reports_submit');
// setup and initialize form field names
$form = array('incident_title' => '', 'incident_description' => '', 'incident_date' => '', 'incident_hour' => '', 'incident_minute' => '', 'incident_ampm' => '', 'latitude' => '', 'longitude' => '', 'location_name' => '', 'country_id' => '', 'incident_category' => array(), 'incident_news' => array(), 'incident_video' => array(), 'incident_photo' => array(), 'incident_doc' => array(), 'person_first' => '', 'person_last' => '', 'person_email' => '', 'form_id' => '', 'custom_field' => array());
// copy the form as errors, so the errors will be stored with keys corresponding to the form field names
$errors = $form;
$form_error = FALSE;
if ($saved == 'saved') {
$form_saved = TRUE;
} else {
$form_saved = FALSE;
}
// Initialize Default Values
$form['incident_date'] = date("m/d/Y", time());
$form['incident_hour'] = "12";
$form['incident_minute'] = "00";
$form['incident_ampm'] = "pm";
// initialize custom field array
$form['custom_field'] = $this->_get_custom_form_fields($id, '', true);
//GET custom forms
$forms = array();
foreach (ORM::factory('form')->find_all() as $custom_forms) {
$forms[$custom_forms->id] = $custom_forms->form_title;
}
$this->template->content->forms = $forms;
// check, has the form been submitted, if so, setup validation
if ($_POST) {
// Instantiate Validation, use $post, so we don't overwrite $_POST fields with our own things
$post = Validation::factory(array_merge($_POST, $_FILES));
// Add some filters
$post->pre_filter('trim', TRUE);
// Add some rules, the input field, followed by a list of checks, carried out in order
$post->add_rules('incident_title', 'required', 'length[3,200]');
$post->add_rules('incident_description', 'required');
$post->add_rules('incident_date', 'required', 'date_mmddyyyy');
$post->add_rules('incident_hour', 'required', 'between[1,12]');
$post->add_rules('incident_minute', 'required', 'between[0,59]');
$post->add_rules('person_first', 'required', 'length[3,100]');
$post->add_rules('person_last', 'required', 'length[3,100]');
$post->add_rules('person_email', 'required', 'email', 'length[3,100]');
if ($_POST['incident_ampm'] != "am" && $_POST['incident_ampm'] != "pm") {
$post->add_error('incident_ampm', 'values');
}
// Validate for maximum and minimum latitude values
$post->add_rules('latitude', 'required', 'between[-90,90]');
$post->add_rules('longitude', 'required', 'between[-180,180]');
$post->add_rules('location_name', 'required', 'length[3,200]');
//XXX: Hack to validate for no checkboxes checked
if (!isset($_POST['incident_category'])) {
$post->incident_category = "";
$post->add_error('incident_category', 'required');
} else {
$post->add_rules('incident_category.*', 'required', 'numeric');
}
// Validate only the fields that are filled in
if (!empty($_POST['incident_news'])) {
foreach ($_POST['incident_news'] as $key => $url) {
if (!empty($url) and !(bool) filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) {
$post->add_error('incident_news', 'url');
}
}
}
// Validate only the fields that are filled in
if (!empty($_POST['incident_video'])) {
foreach ($_POST['incident_video'] as $key => $url) {
if (!empty($url) and !(bool) filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) {
$post->add_error('incident_video', 'url');
}
}
}
// Validate photo uploads
$post->add_rules('incident_photo', 'upload::valid', 'upload::type[gif,jpg,png]', 'upload::size[2M]');
// Validate doc uploads
$post->add_rules('incident_doc', 'upload::valid', 'upload::type[doc,pdf,odt,xml]', 'upload::size[2M]');
// Validate Personal Information
if (!empty($_POST['person_first'])) {
$post->add_rules('person_first', 'length[3,100]');
}
if (!empty($_POST['person_last'])) {
$post->add_rules('person_last', 'length[3,100]');
}
if (!empty($_POST['person_email'])) {
$post->add_rules('person_email', 'email', 'length[3,100]');
}
// Test to see if things passed the rule checks
if ($post->validate()) {
// STEP 1: SAVE LOCATION
$location = new Location_Model();
$location->location_name = $post->location_name;
$location->latitude = $post->latitude;
$location->longitude = $post->longitude;
$location->location_date = date("Y-m-d H:i:s", time());
$location->save();
// STEP 2: SAVE INCIDENT
$incident = new Incident_Model();
//.........这里部分代码省略.........
示例11: edit
/**
* Edit a report
* @param bool|int $id The id no. of the report
* @param bool|string $saved
*/
function edit($id = false, $saved = false)
{
$this->template->content = new View('admin/reports_edit');
$this->template->content->title = 'Create A Report';
// setup and initialize form field names
$form = array('location_id' => '', 'locale' => '', 'incident_title' => '', 'incident_description' => '', 'incident_date' => '', 'incident_hour' => '', 'incident_minute' => '', 'incident_ampm' => '', 'latitude' => '', 'longitude' => '', 'location_name' => '', 'country_id' => '', 'incident_category' => array(), 'incident_news' => array(), 'incident_video' => array(), 'incident_photo' => array(), 'person_first' => '', 'person_last' => '', 'person_email' => '');
// copy the form as errors, so the errors will be stored with keys corresponding to the form field names
$errors = $form;
$form_error = FALSE;
if ($saved == 'saved') {
$form_saved = TRUE;
} else {
$form_saved = FALSE;
}
// Locale (Language) Array
$this->template->content->locale_array = Kohana::config('locale.all_languages');
// Create Categories
$this->template->content->categories = $this->_get_categories();
$this->template->content->new_categories_form = $this->_new_categories_form_arr();
// Time formatting
$this->template->content->hour_array = $this->_hour_array();
$this->template->content->minute_array = $this->_minute_array();
$this->template->content->ampm_array = $this->_ampm_array();
// Get Countries
$countries = array();
foreach (ORM::factory('country')->orderby('country')->find_all() as $country) {
// Create a list of all categories
$this_country = $country->country;
if (strlen($this_country) > 35) {
$this_country = substr($this_country, 0, 35) . "...";
}
$countries[$country->id] = $this_country;
}
$this->template->content->countries = $countries;
// Retrieve thumbnail photos (if edit);
//XXX: fix _get_thumbnails
$this->template->content->incident = $this->_get_thumbnails($id);
// Are we creating this report from an SMS or Twitter Message?
// If so retrieve message
if (isset($_GET['mid']) && !empty($_GET['mid']) || isset($_GET['tid']) && !empty($_GET['tid'])) {
// Check what kind of message this is
if (isset($_GET['mid'])) {
//Then it's an SMS message
$messageType = 'sms';
$mobile_id = $_GET['mid'];
$dbtable = 'message';
$col_prefix = 'message';
$incident_title = 'Mobile Report';
} elseif (isset($_GET['tid'])) {
//Then it's a Twitter message
$messageType = 'twitter';
$mobile_id = $_GET['tid'];
$dbtable = 'twitter';
$col_prefix = 'tweet';
$incident_title = 'Twitter Report';
}
$message = ORM::factory($dbtable, $mobile_id)->where($col_prefix . '_type', '1');
if ($message->loaded == true) {
// Has a report already been created for this SMS?
if ($message->incident_id != 0) {
// Redirect to report
url::redirect('admin/reports/edit/' . $message->incident_id);
}
if ($messageType == 'sms') {
$this->template->content->message = $message->message;
$this->template->content->message_from = $message->message_from;
$this->template->content->show_messages = true;
$form['incident_title'] = $incident_title;
$form['incident_description'] = $message->message;
$from_search = $this->template->content->message_from;
} elseif ($messageType == 'twitter') {
$this->template->content->message = $message->tweet;
$this->template->content->message_from = $message->tweet_from;
$this->template->content->show_messages = true;
$form['incident_title'] = $incident_title;
$form['incident_description'] = $message->tweet;
$from_search = $this->template->content->tweet_from;
}
// Retrieve Last 5 Messages From this Number
$this->template->content->allmessages = ORM::factory($dbtable)->where($col_prefix . '_from', $from_search)->where($col_prefix . '_type', '1')->orderby($col_prefix . '_date', 'desc')->limit(5)->find_all();
} else {
$mobile_id = "";
$this->template->content->show_messages = false;
}
} else {
$this->template->content->show_messages = false;
}
// check, has the form been submitted, if so, setup validation
if ($_POST) {
// Instantiate Validation, use $post, so we don't overwrite $_POST fields with our own things
$post = Validation::factory(array_merge($_POST, $_FILES));
// Add some filters
$post->pre_filter('trim', TRUE);
// Add some rules, the input field, followed by a list of checks, carried out in order
$post->add_rules('locale', 'required', 'alpha_dash', 'length[5]');
//.........这里部分代码省略.........
示例12: import_reports
/**
* Import Reports via XML
* @param DOMNodeList Object $report
* @return bool
*/
public function import_reports($reports)
{
/* Import individual reports */
foreach ($reports->getElementsByTagName('report') as $report) {
$this->totalreports++;
// Get Report id
$report_id = $report->getAttribute('id');
// Check if this incident already exists in the db
if (isset($report_id) and isset($this->incident_ids[$report_id])) {
$this->notices[] = Kohana::lang('import.incident_exists') . $report_id;
} else {
/* Step 1: Location information */
$locations = $report->getElementsByTagName('location');
// If location information has been provided
if ($locations->length > 0) {
$report_location = $locations->item(0);
// Location Name
$location_name = xml::get_node_text($report_location, 'name');
// Longitude
$longitude = xml::get_node_text($report_location, 'longitude');
// Latitude
$latitude = xml::get_node_text($report_location, 'latitude');
if ($location_name) {
// For geocoding purposes
$location_geocoded = map::geocode($location_name);
// Save the location
$new_location = new Location_Model();
$new_location->location_name = $location_name ? $location_name : NULL;
$new_location->location_date = $this->time;
// If longitude/latitude values are present
if ($latitude and $longitude) {
$new_location->latitude = $latitude ? $latitude : 0;
$new_location->longitude = $longitude ? $longitude : 0;
} else {
// Get geocoded lat/lon values
$new_location->latitude = $location_geocoded ? $location_geocoded['latitude'] : $latitude;
$new_location->longitude = $location_geocoded ? $location_geocoded['longitude'] : $longitude;
}
$new_location->country_id = $location_geocoded ? $location_geocoded['country_id'] : 0;
$new_location->save();
// Add this location to array of imported locations
$this->locations_added[] = $new_location->id;
}
}
/* Step 2: Save Report */
// Report Title
$report_title = xml::get_node_text($report, 'title');
// Report Date
$report_date = xml::get_node_text($report, 'date');
// Missing report title or report date?
if (!$report_title or !$report_date) {
$this->errors[] = Kohana::lang('import.xml.incident_title_date') . $this->totalreports;
}
// If report date is not in the required format
if (!strtotime($report_date)) {
$this->errors[] = Kohana::lang('import.incident_date') . $this->totalreports . ': ' . html::escape($report_date);
} else {
// Approval status?
$approved = $report->getAttribute('approved');
$report_approved = (isset($approved) and in_array($approved, $this->allowable)) ? $approved : 0;
// Verified Status?
$verified = $report->getAttribute('verified');
$report_verified = (isset($verified) and in_array($verified, $this->allowable)) ? $verified : 0;
// Report mode?
$allowed_modes = array(1, 2, 3, 4);
$mode = $report->getAttribute('mode');
$report_mode = (isset($mode) and in_array($mode, $allowed_modes)) ? $mode : 1;
// Report Form
$report_form = xml::get_node_text($report, 'form_name', FALSE);
if ($report_form) {
if (!isset($this->existing_forms[utf8::strtoupper($report_form)])) {
$this->notices[] = Kohana::lang('import.xml.no_form_exists') . $this->totalreports . ': "' . $report_form . '"';
}
$form_id = isset($this->existing_forms[utf8::strtoupper($report_form)]) ? $this->existing_forms[utf8::strtoupper($report_form)] : 1;
}
// Report Date added
$dateadd = xml::get_node_text($report, 'dateadd');
// Report Description
$report_description = xml::get_node_text($report, 'description');
$new_report = new Incident_Model();
$new_report->location_id = isset($new_location) ? $new_location->id : 0;
$new_report->user_id = 0;
$new_report->incident_title = $report_title;
$new_report->incident_description = $report_description ? $report_description : '';
$new_report->incident_date = date("Y-m-d H:i:s", strtotime($report_date));
$new_report->incident_dateadd = ($dateadd and strtotime($dateadd)) ? $dateadd : $this->time;
$new_report->incident_active = $report_approved;
$new_report->incident_verified = $report_verified;
$new_report->incident_mode = $report_mode;
$new_report->form_id = isset($form_id) ? $form_id : 1;
$new_report->save();
// Increment imported rows counter
$this->importedreports++;
// Add this report to array of reports added during import
$this->incidents_added[] = $new_report->id;
//.........这里部分代码省略.........
示例13: submit
/**
* Submits a new report.
*/
public function submit($id = false, $saved = false)
{
// First, are we allowed to submit new reports?
if (!Kohana::config('settings.allow_reports')) {
url::redirect(url::site() . 'main');
}
$this->template->header->this_page = 'reports_submit';
$this->template->content = new View('reports_submit');
// setup and initialize form field names
$form = array('incident_title' => '', 'incident_description' => '', 'incident_date' => '', 'incident_hour' => '', 'incident_minute' => '', 'incident_ampm' => '', 'latitude' => '', 'longitude' => '', 'location_name' => '', 'country_id' => '', 'incident_category' => array(), 'incident_news' => array(), 'incident_video' => array(), 'incident_photo' => array(), 'person_first' => '', 'person_last' => '', 'person_email' => '', 'form_id' => '', 'custom_field' => array());
// copy the form as errors, so the errors will be stored with keys corresponding to the form field names
$errors = $form;
$form_error = FALSE;
if ($saved == 'saved') {
$form_saved = TRUE;
} else {
$form_saved = FALSE;
}
// Initialize Default Values
$form['incident_date'] = date("m/d/Y", time());
$form['incident_hour'] = "12";
$form['incident_minute'] = "00";
$form['incident_ampm'] = "pm";
// initialize custom field array
$form['custom_field'] = $this->_get_custom_form_fields($id, '', true);
//GET custom forms
$forms = array();
foreach (ORM::factory('form')->find_all() as $custom_forms) {
$forms[$custom_forms->id] = $custom_forms->form_title;
}
$this->template->content->forms = $forms;
// check, has the form been submitted, if so, setup validation
if ($_POST) {
// Instantiate Validation, use $post, so we don't overwrite $_POST fields with our own things
$post = Validation::factory(array_merge($_POST, $_FILES));
// Add some filters
$post->pre_filter('trim', TRUE);
// Add some rules, the input field, followed by a list of checks, carried out in order
//$post->add_rules('incident_title', 'required', 'length[3,200]');
$post->add_rules('incident_description', 'required');
$post->add_rules('incident_date', 'required', 'date_mmddyyyy');
$post->add_rules('incident_hour', 'required', 'between[1,12]');
$post->add_rules('incident_minute', 'required', 'between[0,59]');
if ($_POST['incident_ampm'] != "am" and $_POST['incident_ampm'] != "pm") {
$post->add_error('incident_ampm', 'values');
}
// Validate for maximum and minimum latitude values
$post->add_rules('latitude', 'required', 'between[-90,90]');
$post->add_rules('longitude', 'required', 'between[-180,180]');
$post->add_rules('location_name', 'required', 'length[3,200]');
//XXX: Hack to validate for no checkboxes checked
if (!isset($_POST['incident_category'])) {
$post->incident_category = "";
$post->add_error('incident_category', 'required');
} else {
$post->add_rules('incident_category.*', 'required', 'numeric');
}
// Validate only the fields that are filled in
if (!empty($_POST['incident_news'])) {
foreach ($_POST['incident_news'] as $key => $url) {
if (!empty($url) and !(bool) filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) {
$post->add_error('incident_news', 'url');
}
}
}
// Validate only the fields that are filled in
if (!empty($_POST['incident_video'])) {
foreach ($_POST['incident_video'] as $key => $url) {
if (!empty($url) and !(bool) filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) {
$post->add_error('incident_video', 'url');
}
}
}
// Validate photo uploads
$post->add_rules('incident_photo', 'upload::valid', 'upload::type[gif,jpg,png]', 'upload::size[2M]');
// Validate Personal Information
if (!empty($_POST['person_first'])) {
$post->add_rules('person_first', 'length[3,100]');
}
if (!empty($_POST['person_last'])) {
$post->add_rules('person_last', 'length[3,100]');
}
if (!empty($_POST['person_email'])) {
$post->add_rules('person_email', 'email', 'length[3,100]');
}
// Test to see if things passed the rule checks
if ($post->validate()) {
// STEP 1: SAVE LOCATION
$location = new Location_Model();
$location->location_name = $post->location_name;
$location->latitude = $post->latitude;
$location->longitude = $post->longitude;
$location->location_date = date("Y-m-d H:i:s", time());
$location->save();
// STEP 2: SAVE INCIDENT
$incident = new Incident_Model();
$incident->location_id = $location->id;
//.........这里部分代码省略.........
示例14: index
function index()
{
$source = 'http://legacy.ushahidi.com/export_data.asp';
ORM::factory('Location')->delete_all();
ORM::factory('Incident')->delete_all();
ORM::factory('Media')->delete_all();
ORM::factory('Incident_Person')->delete_all();
ORM::factory('Incident_Category')->delete_all();
ORM::factory('Comment')->delete_all();
ORM::factory('Rating')->delete_all();
// load as string
$xmlstr = file_get_contents($source);
$incidents = new SimpleXMLElement($xmlstr);
foreach ($incidents as $post) {
// STEP 1: SAVE LOCATION
$location = new Location_Model();
$location->location_name = (string) $post->location_name;
$location->latitude = (string) $post->latitude;
$location->longitude = (string) $post->longitude;
$location->country_id = 115;
$location->location_date = date("Y-m-d H:i:s", time());
$location->save();
// STEP 2: SAVE INCIDENT
$incident = new Incident_Model();
$incident->location_id = $location->id;
$incident->user_id = 0;
$incident->incident_title = (string) $post->incident_title;
$incident->incident_description = (string) $post->incident_description;
$incident->incident_date = (string) $post->incident_date;
$incident->incident_active = (string) $post->active;
$incident->incident_verified = (string) $post->verified;
$incident->incident_dateadd = date("Y-m-d H:i:s", time());
$incident->save();
// STEP 3: SAVE CATEGORIES
$incident_category = split(",", (string) $post->incident_category);
foreach ($incident_category as $item) {
if ($item != "") {
$incident_category = new Incident_Category_Model();
$incident_category->incident_id = $incident->id;
$incident_category->category_id = $item;
$incident_category->save();
}
}
// STEP 4: SAVE MEDIA
// a. News
$news = new Media_Model();
$news->location_id = $location->id;
$news->incident_id = $incident->id;
$news->media_type = 4;
// News
$news->media_link = (string) $post->news;
$news->media_date = date("Y-m-d H:i:s", time());
$news->save();
// b. Video
$video = new Media_Model();
$video->location_id = $location->id;
$video->incident_id = $incident->id;
$video->media_type = 2;
// Video
$video->media_link = (string) $post->video;
$video->media_date = date("Y-m-d H:i:s", time());
$video->save();
// STEP 5: SAVE PERSONAL INFORMATION
$person = new Incident_Person_Model();
$person->location_id = $location->id;
$person->incident_id = $incident->id;
$person->person_first = (string) $post->person_first;
$person->person_phone = (string) $post->person_phone;
$person->person_email = (string) $post->person_email;
$person->person_ip = (string) $post->person_ip;
$person->person_date = date("Y-m-d H:i:s", time());
$person->save();
}
echo "******************************************<BR>";
echo "******************************************<BR>";
echo "**** IMPORT COMPLETE!!!<BR>";
echo "******************************************<BR>";
echo "******************************************<BR>";
}
示例15: isset
/**
* Function to import a report form a row in the CSV file
* @param array $row
* @return bool
*/
function import_report($row)
{
// If the date is not in proper date format
if (!strtotime($row['INCIDENT DATE'])) {
$this->errors[] = Kohana::lang('import.incident_date') . ($this->rownumber + 1) . ': ' . $row['INCIDENT DATE'];
}
// If a value of Yes or No is NOT set for approval status for the imported row
if (isset($row["APPROVED"]) and !in_array(utf8::strtoupper($row["APPROVED"]), array('NO', 'YES'))) {
$this->errors[] = Kohana::lang('import.csv.approved') . ($this->rownumber + 1);
}
// If a value of Yes or No is NOT set for verified status for the imported row
if (isset($row["VERIFIED"]) and !in_array(utf8::strtoupper($row["VERIFIED"]), array('NO', 'YES'))) {
$this->errors[] = Kohana::lang('import.csv.verified') . ($this->rownumber + 1);
}
if (count($this->errors)) {
return false;
}
// STEP 1: SAVE LOCATION
if (isset($row['LOCATION'])) {
$location = new Location_Model();
$location->location_name = isset($row['LOCATION']) ? $row['LOCATION'] : '';
// For Geocoding purposes
$location_geocoded = map::geocode($location->location_name);
// If we have LATITUDE and LONGITUDE use those
if (isset($row['LATITUDE']) and isset($row['LONGITUDE'])) {
$location->latitude = isset($row['LATITUDE']) ? $row['LATITUDE'] : 0;
$location->longitude = isset($row['LONGITUDE']) ? $row['LONGITUDE'] : 0;
} else {
$location->latitude = $location_geocoded ? $location_geocoded['latitude'] : 0;
$location->longitude = $location_geocoded ? $location_geocoded['longitude'] : 0;
}
$location->country_id = $location_geocoded ? $location_geocoded['country_id'] : 0;
$location->location_date = $this->time;
$location->save();
$this->locations_added[] = $location->id;
}
// STEP 2: SAVE INCIDENT
$incident = new Incident_Model();
$incident->location_id = isset($row['LOCATION']) ? $location->id : 0;
$incident->user_id = 0;
$incident->form_id = (isset($row['FORM #']) and Form_Model::is_valid_form($row['FORM #'])) ? $row['FORM #'] : 1;
$incident->incident_title = $row['INCIDENT TITLE'];
$incident->incident_description = isset($row['DESCRIPTION']) ? $row['DESCRIPTION'] : '';
$incident->incident_date = date("Y-m-d H:i:s", strtotime($row['INCIDENT DATE']));
$incident->incident_dateadd = $this->time;
$incident->incident_active = (isset($row['APPROVED']) and utf8::strtoupper($row['APPROVED']) == 'YES') ? 1 : 0;
$incident->incident_verified = (isset($row['VERIFIED']) and utf8::strtoupper($row['VERIFIED']) == 'YES') ? 1 : 0;
$incident->save();
$this->incidents_added[] = $incident->id;
// STEP 3: Save Personal Information
if (isset($row['FIRST NAME']) or isset($row['LAST NAME']) or isset($row['EMAIL'])) {
$person = new Incident_Person_Model();
$person->incident_id = $incident->id;
$person->person_first = isset($row['FIRST NAME']) ? $row['FIRST NAME'] : '';
$person->person_last = isset($row['LAST NAME']) ? $row['LAST NAME'] : '';
$person->person_email = (isset($row['EMAIL']) and valid::email($row['EMAIL'])) ? $row['EMAIL'] : '';
$person->person_date = date("Y-m-d H:i:s", time());
// Make sure that you're not importing an empty record i.e at least one field has been recorded
// If all fields are empty i.e you have an empty record, don't save
if (!empty($person->person_first) or !empty($person->person_last) or !empty($person->person_email)) {
$person->save();
// Add to array of incident persons added
$this->incident_persons_added[] = $person->id;
}
}
// STEP 4: SAVE CATEGORIES
// If CATEGORY column exists
if (isset($row['CATEGORY'])) {
$categorynames = explode(',', trim($row['CATEGORY']));
// Trim whitespace from array values
$categorynames = array_map('trim', $categorynames);
// Get rid of duplicate category entries in a row
$categories = array_unique(array_map('strtolower', $categorynames));
// Add categories to incident
foreach ($categories as $categoryname) {
// Convert the first string character of the category name to Uppercase
$categoryname = utf8::ucfirst($categoryname);
// For purposes of adding an entry into the incident_category table
$incident_category = new Incident_Category_Model();
$incident_category->incident_id = $incident->id;
// If category name exists, add entry in incident_category table
if ($categoryname != '') {
// Check if the category exists (made sure to convert to uppercase for comparison)
if (!isset($this->existing_categories[utf8::strtoupper($categoryname)])) {
$this->notices[] = Kohana::lang('import.new_category') . $categoryname;
$category = new Category_Model();
$category->category_title = $categoryname;
// We'll just use black for now. Maybe something random?
$category->category_color = '000000';
// because all current categories are of type '5'
$category->category_visible = 1;
$category->category_description = $categoryname;
$category->category_position = count($this->existing_categories);
$category->save();
$this->categories_added[] = $category->id;
//.........这里部分代码省略.........