예제 #1
0
파일: page.php 프로젝트: KasaiDot/FoOlSlide
 /**
  * Comodity get() function that fetches extra data for the chapter selected.
  * It doesn't get the pages. For pages, see: $this->get_pages()
  *
  * @author	Woxxy
  * @param	integer|NULL $limit Limit the number of results.
  * @param	integer|NULL $offset Offset the results when limiting.
  * @return	DataMapper Returns self for method chaining.
  */
 public function get_bulk($limit = NULL, $offset = NULL)
 {
     // Call the get()
     $result = $this->get($limit, $offset);
     // Return instantly on false.
     if (!$result) {
         return $result;
     }
     // For each item we fetched, add the data, beside the pages
     foreach ($this->all as $item) {
         $item->comic = new Comic($this->comic_id);
         $teams = new Team();
         $item->teams = $teams->get_teams($this->team_id, $this->joint_id);
     }
     return $result;
 }
예제 #2
0
파일: members.php 프로젝트: Nakei/FoOlSlide
	function joint_get() {
		if (!$this->get('id') || !is_numeric($this->get('id'))) {
			$this->response(NULL, 400);
		}

		$team = new Team();
		$teams = $team->get_teams(0, $this->get('id'));

		if (count($teams) > 0) {
			$result = array();
			foreach($teams as $item) {
				$result[] = $item->to_array();
			}
			$this->response($result, 200); // 200 being the HTTP response code
		} else {
			$this->response(array('error' => _('Team could not be found')), 404);
		}
	}
예제 #3
0
 function joint_get()
 {
     // check that the id is at least a valid number
     $this->_check_id();
     // get the single team by id
     $team = new Team();
     $teams = $team->get_teams(0, $this->get('id'));
     if (count($teams) > 0) {
         $result = array();
         // teams is a normal array, can't use all_to_array()
         foreach ($teams as $item) {
             $result[] = $item->to_array();
         }
         $this->response($result, 200);
         // 200 being the HTTP response code
     } else {
         // no team found
         $this->response(array('error' => _('Team could not be found')), 404);
     }
 }
예제 #4
0
 function serie($stub = NULL, $chapter_id = "")
 {
     $comic = new Comic();
     $comic->where("stub", $stub)->get();
     if ($comic->result_count() == 0) {
         set_notice('warn', _('Sorry, the series you are looking for does not exist.'));
         $this->manage();
         return false;
     }
     $this->viewdata["function_title"] = '<a href="' . site_url('/admin/series/manage/') . '">' . _('Manage') . '</a>';
     if ($chapter_id == "") {
         $this->viewdata["extra_title"][] = $comic->name;
     }
     $data["comic"] = $comic;
     if ($chapter_id != "") {
         if ($this->input->post()) {
             $chapter = new Chapter();
             $chapter->update_chapter_db($this->input->post());
             $subchapter = is_int($chapter->subchapter) ? $chapter->subchapter : 0;
             set_notice('notice', sprintf(_('Information for Chapter %s has been updated.'), $chapter->chapter . '.' . $subchapter));
         }
         $chapter = new Chapter($chapter_id);
         $data["chapter"] = $chapter;
         $team = new Team();
         $teams = $team->get_teams($chapter->team_id, $chapter->joint_id);
         $table = ormer($chapter);
         $table[] = array(_('Teams'), array('name' => 'team', 'type' => 'input', 'value' => $teams, 'help' => _('Insert the names of the teams who worked on this chapter.')));
         $table = tabler($table);
         $data["table"] = $table;
         $this->viewdata["extra_title"][] = '<a href="' . site_url('admin/series/series/' . $comic->stub) . '">' . $comic->name . '</a>';
         $this->viewdata["extra_title"][] = $chapter->name != "" ? $chapter->name : $chapter->chapter . "." . $chapter->subchapter;
         $data["pages"] = $chapter->get_pages();
         $this->viewdata["main_content_view"] = $this->load->view("admin/series/chapter.php", $data, TRUE);
         $this->load->view("admin/default.php", $this->viewdata);
         return true;
     }
     if ($this->input->post()) {
         // Prepare for stub change in case we have to redirect instead of just printing the view
         $old_comic_stub = $comic->stub;
         $comic->update_comic_db($this->input->post());
         $config['upload_path'] = 'content/cache/';
         $config['allowed_types'] = 'jpg|png|gif';
         $this->load->library('upload', $config);
         $field_name = "thumbnail";
         if (count($_FILES) > 0 && $this->upload->do_upload($field_name)) {
             $up_data = $this->upload->data();
             if (!$this->files_model->comic_thumb($comic, $up_data)) {
                 log_message("error", "Controller: series.php/serie: image failed being added to folder");
             }
             if (!unlink($up_data["full_path"])) {
                 log_message('error', 'series.php/serie: couldn\'t remove cache file ' . $data["full_path"]);
                 return false;
             }
         }
         flash_notice('notice', sprintf(_('Updated series information for %s.'), $comic->name));
         // Did we change the stub of the comic? We need to redirect to the new page then.
         if (isset($old_comic_stub) && $old_comic_stub != $comic->stub) {
             redirect('/admin/series/series/' . $comic->stub);
         }
     }
     $chapters = new Chapter();
     $chapters->where('comic_id', $comic->id)->include_related('team')->order_by('volume', 'DESC')->order_by('chapter', 'DESC')->order_by('subchapter', 'DESC')->get();
     foreach ($chapters->all as $key => $item) {
         if ($item->joint_id > 0) {
             $teams = new Team();
             $jointers = $teams->get_teams(0, $item->joint_id);
             $item->jointers = $jointers;
             unset($jointers);
             unset($teams);
         }
     }
     $data["chapters"] = $chapters;
     if ($comic->get_thumb()) {
         $comic->thumbnail = $comic->get_thumb();
     }
     $table = ormer($comic);
     $licenses = new License();
     $table[] = array(_('Licensed in'), array('name' => 'licensed', 'type' => 'nation', 'value' => $licenses->get_by_comic($comic->id), 'help' => _('Insert the nations where the series is licensed in order to limit the availability.')));
     $table = tabler($table);
     $data['table'] = $table;
     $this->viewdata["main_content_view"] = $this->load->view("admin/series/series.php", $data, TRUE);
     $this->load->view("admin/default.php", $this->viewdata);
 }
예제 #5
0
파일: chapter.php 프로젝트: Nakei/FoOlSlide
	/**
	 * Sets the $this->teams variable if it hasn't been done before
	 *
	 * @author	Woxxy
	 * @return	boolean True on success, false on failure.
	 */
	public function get_teams() {
		if (isset($this->teams))
			return true;
		$teams = new Team();
		$this->teams = $teams->get_teams($this->team_id, $this->joint_id);
		foreach ($this->all as $item) {
			if (isset($item->teams))
				continue;
			$teams = new Team();
			$item->teams = $teams->get_teams($item->team_id, $item->joint_id);
		}

		// All good, return true.
		return true;
	}
예제 #6
0
 /**
  * Returns leader team objects, false in case user is not a team leader
  * 
  * @author Woxxy
  * @param int $team_id if NULL returns each team in which this user is leader
  * @return object Teams
  * 
  */
 function is_team_leader($team_id = NULL, $joint_id = NULL)
 {
     // not logged in? get booted
     if (!$this->is_logged_in()) {
         return FALSE;
     }
     // this calls another function in order to cycle each team in the joint with is_team
     if (!is_null($joint_id) && $joint_id != 0) {
         $teams = new Team();
         return $this->is_team_leader_array($teams->get_teams(0, $joint_id));
     }
     // let's get all the memberships
     if (!isset($this->cached['leaderships'])) {
         $memberships = new Membership();
         $memberships->where('user_id', $this->get_user_id())->where('accepted', 1)->where('is_leader', 1)->get();
         $this->cached['leaderships'] = $memberships->get_clone();
     } else {
         $memberships = $this->cached['leaderships'];
     }
     // if not member of any team, return FALSE
     if ($memberships->result_count() < 1) {
         return FALSE;
     }
     // if a team is set, let's grab the team and return the data of the team
     if (is_numeric($team_id)) {
         foreach ($memberships->all as $membership) {
             if ($membership->team_id == $team_id) {
                 return new Team($team_id);
             }
         }
         return FALSE;
     }
     $teams = new Team();
     // Notice that if you remove the result count on $leaderships, this will not run and the user will be leader of any team!
     foreach ($memberships->all as $key => $membership) {
         $teams->or_where('id', $membership->team_id);
     }
     $teams->get();
     return $teams;
 }
예제 #7
0
파일: reader.php 프로젝트: Nakei/FoOlSlide
	function joint_get() {
		if (!$this->get('id') || !is_numeric($this->get('id'))) {
			$this->response(NULL, 400);
		}

		if (!$this->get('page') || !is_numeric($this->get('page')) || $this->get('page') < 1)
			$page = 1;
		else
			$page = (int) $this->get('page');

		$page = ($page * 100) - 100;

		$joint = new Joint();
		$joint->where('joint_id', $this->get('id'))->limit(1)->get();

		if ($joint->result_count() == 1) {

			$team = new Team();
			$teams = $team->get_teams(0, $this->get('id'));

			$result = array();
			foreach ($teams as $item) {
				$result['teams'][] = $item->to_array();
			}

			$chapters = new Chapter();
			$chapters->where('joint_id', $joint->joint_id);
			$chapters->limit(100, $page)->get();
			$chapters->get_comic();

			$result['chapters'] = array();
			foreach ($chapters->all as $key => $chapter) {
				$result['chapters'][$key]['comic'] = $chapter->comic->to_array();
				$result['chapters'][$key]['chapter'] = $chapter->to_array();
				$result['chapters'][$key]['teams'] = $result['teams'];
			}

			$this->response($result, 200); // 200 being the HTTP response code
		} else {
			$this->response(array('error' => _('Team could not be found')), 404);
		}
	}
예제 #8
0
 /**
  * Returns chapters per page by joint ID
  * Also returns the teams
  * 
  * This is not a method light enough to lookup teams. use api/members/joint for that
  * 
  * Available filters: id (required), page, per_page (default:30, max:100), orderby
  * 
  * @author Woxxy
  */
 function joint_get()
 {
     // check that the id is at least a valid number
     $this->_check_id();
     // grab by joint_id, id for joints means nothing much
     $joint = new Joint();
     $joint->where('joint_id', $this->get('id'))->limit(1)->get();
     if ($joint->result_count() == 1) {
         // good old get_teams() will give us all Team objects in an array
         $team = new Team();
         $teams = $team->get_teams(0, $this->get('id'));
         // $teams is a normal array, so we have to do a loop
         $result = array();
         foreach ($teams as $item) {
             $result['teams'][] = $item->to_array();
         }
         // grab all the chapters from the same joint
         $chapters = new Chapter();
         $chapters->where('joint_id', $joint->joint_id);
         // apply the limit and orderby filters
         $this->_orderby($chapters);
         $this->_page_to_offset($chapters);
         $chapters->get();
         $chapters->get_comic();
         // let's put the chapters in a nice [comic][chapter][teams] list
         $result['chapters'] = array();
         foreach ($chapters->all as $key => $chapter) {
             $result['chapters'][$key]['comic'] = $chapter->comic->to_array();
             $result['chapters'][$key]['chapter'] = $chapter->to_array();
             $result['chapters'][$key]['teams'] = $result['teams'];
         }
         // all good
         $this->response($result, 200);
         // 200 being the HTTP response code
     } else {
         // nothing for this joint or page
         $this->response(array('error' => _('Team could not be found')), 404);
     }
 }
예제 #9
0
	/**
	 * Returns team objects of the user, false in case no team
	 * 
	 * @author Woxxy
	 * @returns object Teams
	 * 
	 */
	function is_team($team_id = NULL, $joint_id = NULL) {
		if (!$this->is_logged_in())
			return false;
		
		if(!is_null($joint_id) && $joint_id != 0)
		{
			$teams = new Team();
			return($this->is_team_array($teams->get_teams(0, $joint_id)));
		}

		$memberships = new Membership();
		$memberships->where('user_id', $this->get_user_id())->where('accepted', 1);

		if (is_numeric($team_id)) {
			$memberships->where('team_id', $team_id);
			$memberships->get();
			if ($memberships->result_count() != 1)
				return false;
			$team = new Team();
			$team->where('id', $team_id)->get();
			return $team;
		}

		$memberships->get();
		if ($memberships->result_count() < 1)
			return false;
		$teams = new Team();
		// Notice that if you remove the result count on $leaderships, this will not run and the user will be leader of any team!
		foreach ($memberships->all as $key => $membership) {
			$teams->or_where('id', $membership->team_id);
		}
		$teams->get();
		return $teams;
	}