You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

563 lines
13 KiB

<?php
/*
Slovenski narečni atlas / Slovenian dialectal atlas
Copyright (C) 2017 Gregor Šajn
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
Class Admin_model extends CI_Model {
function __construct()
{
parent::__construct();
$this->load->database();
}
function users()
{
$this->db->select('t1.*');
$this->db->from("users AS t1");
$result=$this->db->get()->result_array();
return $result;
}
function user($id_user)
{
$this->db->select('t1.*');
$this->db->from("users AS t1");
$this->db->where('t1.id',$id_user);
$user=$this->db->get()->row_array();
return $user;
}
function perform_login($username,$password)
{
$this->db->select("
t1.*,
");
$this->db->from('users AS t1');
$this->db->where('t1.username',$username);
$user=$this->db->get()->row_array();
if(password_verify($password, $user['password_hash']))
{
return $user;
}
else
{
return false;
}
}
function subject($id)
{
$this->db->select('*');
$this->db->from('subjects AS t1');
$this->db->where('id',$id);
$subject=$this->db->get()->row_array();
return $subject;
}
function subjects()
{
$this->db->select('*');
$this->db->from('subjects AS t1');
$subjects=$this->db->get()->result_array();
$data=array();
foreach($subjects as $subject)
{
$data[$subject['id']]=$subject['title'];
}
return $data;
}
function word($id)
{
$this->db->select('t1.*');
$this->db->from("words AS t1");
$this->db->where("t1.id",$id);
$word=$this->db->get()->row_array();
if(isset($word['image']))
{
$word['image']=$word['image'];
}
if(isset($word['comment']))
{
$word['comment']=$word['comment'];
}
return $word;
}
function transcriptions($id_word=0,$id_location=0,$id_subject=0,$id_transcription=0,$id_lexem=0)
{
$this->db->select('
t1.*,
t2.name,
t3.title AS lexem_title,
t4.title AS word_title,
t5.title AS subject_title,
');
$this->db->from('transcriptions AS t1');
$this->db->join('locations AS t2','on t1.id_location=t2.id','LEFT');
$this->db->join('lexems AS t3','on t1.id_lexem=t3.id','LEFT');
$this->db->join('words AS t4','on t3.id_word=t4.id','LEFT');
$this->db->join('subjects AS t5','on t4.id_subject=t5.id','LEFT');
if($id_subject)
{
$this->db->where('t4.id_subject',$id_subject);
}
if($id_word)
{
$this->db->where('t3.id_word',$id_word);
}
if($id_location)
{
$this->db->where('t1.id_location',$id_location);
}
if($id_transcription)
{
$this->db->where('t1.id!=',$id_transcription);
}
if($id_lexem)
{
$this->db->where('t1.id_lexem',$id_lexem);
}
$this->db->order_by('lexem_title','ASC');
$result=$this->db->get()->result_array();
return $result;
}
function transcription($id)
{
$this->db->select('
t1.*,
t2.title AS lexem_title,
t3.id_subject,
t3.id AS id_word,
');
$this->db->from('transcriptions AS t1');
$this->db->join('lexems AS t2','on t1.id_lexem=t2.id');
$this->db->join('words AS t3','on t2.id_word=t3.id');
$this->db->where('t1.id',$id);
$result=$this->db->get()->row_array();
return $result;
}
function titles($id_word)
{
$this->db->select('id,title');
$this->db->from('lexems');
$this->db->where('id_word',$id_word);
$this->db->group_by('title,id');
$this->db->order_by('title','ASC');
$titles=$this->db->get()->result_array();
$data=array();
foreach($titles as $title)
{
$data[$title['id']]=$title['title'];
}
return $data;
}
function locations($id_subject)
{
$this->db->select('t2.*');
$this->db->from('subject_locations AS t1');
$this->db->join('locations AS t2','t2.id=t1.id_location');
if($id_subject)
{
$this->db->where('t1.id_subject',$id_subject);
}
$this->db->order_by('t2.name','ASC');
$this->db->group_by('t2.id');
$result=$this->db->get()->result_array();
$data=array();
foreach($result as $location)
{
$data[$location['id']]=$location['name'];
}
return $data;
}
function locations_all()
{
$this->db->select('*');
$this->db->from('locations');
$this->db->order_by('name','ASC');
$result=$this->db->get()->result_array();
return $result;
}
function location($id_location)
{
$this->db->select('*');
$this->db->from('locations');
$this->db->where('id',$id_location);
$location=$this->db->get()->row_array();
return $location;
}
function subject_locations($id_location)
{
$this->db->select('*');
$this->db->from('subject_locations');
$this->db->where('id_location',$id_location);
$subject_locations=$this->db->get()->result_array();
$data=array();
foreach($subject_locations as $entry)
{
$data[$entry['id_subject']]=$entry['id_subject'];
}
return $data;
}
function dialects($options=false)
{
$this->db->select('*');
$this->db->from('dialects');
$this->db->where('type',1);
$dialects=$this->db->get()->result_array();
if($options)
{
$data=array();
foreach($dialects as $dialect)
{
$data[$dialect['id']]=$dialect['name'];
}
return $data;
}
return $dialects;
}
function subdialects($id_dialect,$options=false)
{
$this->db->select('*');
$this->db->from('dialects');
$this->db->where('type',2);
$this->db->where('id_parent',$id_dialect);
$subdialects=$this->db->get()->result_array();
if($options)
{
$data=array();
foreach($subdialects as $dialect)
{
$data[$dialect['id']]=$dialect['name'];
}
return $data;
}
return $subdialects;
}
function subsubdialects($id_subdialect,$options=false)
{
$this->db->select('*');
$this->db->from('dialects');
$this->db->where('type',3);
$this->db->where('id_parent',$id_subdialect);
$subsubdialects=$this->db->get()->result_array();
if($options)
{
$data=array();
foreach($subsubdialects as $dialect)
{
$data[$dialect['id']]=$dialect['name'];
}
return $data;
}
return $subsubdialects;
}
function locations_by_word($id_word)
{
//get selected locations
$this->db->select("
t2.*
");
$this->db->from('transcriptions as t1');
$this->db->join('locations as t2','on t1.id_location=t2.id');
$this->db->where('t1.id_word',$id_word);
$selected_locations=$this->db->get()->result_array();
//all locations
$this->db->select('*');
$this->db->from('locations');
$locations=$this->db->get()->result_array();
//init data array for unselected locations
$data=array();
foreach($locations as $location)
{
if(!in_array($location,$selected_locations))
{
$data[$location['id']]=$location['name'];
}
}
return $data;
}
function lexems($id_word=0,$id_subject=0,$options=false)
{
$this->db->select('
t1.*,
t2.title AS word_title,
t3.title AS subject_title,
');
$this->db->from('lexems AS t1');
$this->db->join('words AS t2','t1.id_word=t2.id');
$this->db->join('subjects AS t3','t2.id_subject=t3.id');
if($id_subject)
{
$this->db->where('t2.id_subject',$id_subject);
}
if($id_word)
{
$this->db->where('t1.id_word',$id_word);
}
$this->db->order_by('t1.title','ASC');
$lexems=$this->db->get()->result_array();
if($options)
{
$data=array();
foreach($lexems as $lexem)
{
$data[$lexem['id']]=$lexem['title'];
}
return $data;
}
return $lexems;
}
function word_lexems($id_word,$options=false)
{
$this->db->select('
t1.*,
t2.title AS word_title,
');
$this->db->from('lexems AS t1');
$this->db->join('words AS t2','t1.id_word=t2.id');
$this->db->where('t1.id_word',$id_word);
$this->db->order_by('t1.title','ASC');
$lexems=$this->db->get()->result_array();
if($options)
{
$data=array();
foreach($lexems as $lexem)
{
$data[$lexem['id']]=$lexem['title'];
}
return $data;
}
return $lexems;
}
function lexem($id)
{
$this->db->select('t1.*,t2.id_subject');
$this->db->from('lexems AS t1');
$this->db->join('words AS t2','t2.id=t1.id_word');
$this->db->where('t1.id',$id);
$lexem=$this->db->get()->row_array();
return $lexem;
}
function subject_title_exists($title,$id=0)
{
$this->db->from('subjects');
$this->db->where('title',$title);
if($id)
{
$this->db->where('id!=',$id);
}
$exists=$this->db->count_all_results();
return $exists;
}
function words_title_exists($title,$id=0,$id_subject)
{
$this->db->from('words');
$this->db->where('title',$title);
if($id)
{
$this->db->where('id!=',$id);
}
$this->db->where('id_subject',$id_subject);
$exists=$this->db->count_all_results();
return $exists;
}
function location_exists($field,$parameter,$id=0)
{
$this->db->from('locations');
$this->db->where($field,$parameter);
if($id)
{
$this->db->where('id!=',$id);
}
$exists=$this->db->count_all_results();
return $exists;
}
function location_short_name_exists($short_name,$id=0)
{
$this->db->select('short_name');
$this->db->from('locations');
$this->db->where('short_name',$short_name);
if($id)
{
$this->db->where('id!=',$id);
}
$names=$this->db->get()->result_array();
$identical=false;
foreach($names as $name)
{
if(strcmp($name['short_name'],$short_name)==0)
{
$identical=true;
}
}
return $identical;
}
function coordinates_exists($lat,$long,$id=0)
{
$this->db->from('locations');
$this->db->where('lat',$lat);
$this->db->where('long',$long);
if($id)
{
$this->db->where('id!=',$id);
}
$exists=$this->db->count_all_results();
return $exists;
}
function lexem_title_exists($id=0,$title,$id_subject,$id_word)
{
}
function username_exists($username,$id_user)
{
$this->db->from('users');
$this->db->where('username',$username);
$this->db->where('id!=',$id_user);
$exists=$this->db->count_all_results();
return $exists;
}
function subject_links($id_subject)
{
//words
$this->db->from('words');
$this->db->where('id_subject',$id_subject);
$word_c=$this->db->count_all_results();
return $word_c;
}
function locations_links($id_location)
{
$this->db->select('*');
$this->db->from('transcriptions');
$this->db->where('id_location',$id_location);
$links=$this->db->get()->result_array();
return $links;
}
function word_links($id_word)
{
$this->db->select('*');
$this->db->from('lexems');
$this->db->where('id_word',$id_word);
$links=$this->db->get()->result_array();
return $links;
}
function lexem_links($id)
{
$this->db->select('*');
$this->db->from('transcriptions');
$this->db->where('id_lexem',$id);
$links=$this->db->get()->result_array();
return $links;
}
}