You've already forked joomla_test
							
							first commit
This commit is contained in:
		
							
								
								
									
										200
									
								
								administrator/components/com_checkin/models/checkin.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										200
									
								
								administrator/components/com_checkin/models/checkin.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,200 @@ | ||||
| <?php | ||||
| /** | ||||
|  * @package     Joomla.Administrator | ||||
|  * @subpackage  com_checkin | ||||
|  * | ||||
|  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. | ||||
|  * @license     GNU General Public License version 2 or later; see LICENSE.txt | ||||
|  */ | ||||
|  | ||||
| defined('_JEXEC') or die; | ||||
|  | ||||
| /** | ||||
|  * Checkin Model | ||||
|  * | ||||
|  * @package     Joomla.Administrator | ||||
|  * @subpackage  com_checkin | ||||
|  * @since       1.6 | ||||
|  */ | ||||
| class CheckinModelCheckin extends JModelList | ||||
| { | ||||
| 	protected $total; | ||||
|  | ||||
| 	protected $tables; | ||||
|  | ||||
| 	/** | ||||
| 	 * Method to auto-populate the model state. | ||||
| 	 * | ||||
| 	 * @Note. Calling getState in this method will result in recursion. | ||||
| 	 * @param   string  $ordering   An optional ordering field. | ||||
| 	 * @param   string  $direction  An optional direction (asc|desc). | ||||
| 	 * | ||||
| 	 * @return  void | ||||
| 	 * | ||||
| 	 * @since   1.6 | ||||
| 	 */ | ||||
| 	protected function populateState($ordering = null, $direction = null) | ||||
| 	{ | ||||
| 		$search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); | ||||
| 		$this->setState('filter.search', $search); | ||||
|  | ||||
| 		// List state information. | ||||
| 		parent::populateState('table', 'asc'); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Checks in requested tables | ||||
| 	 * | ||||
| 	 * @param   array    $ids  An array of table names. Optional. | ||||
| 	 * | ||||
| 	 * @return  integer  Checked in item count | ||||
| 	 * | ||||
| 	 * @since   1.6 | ||||
| 	 */ | ||||
| 	public function checkin($ids = array()) | ||||
| 	{ | ||||
| 		$app = JFactory::getApplication(); | ||||
| 		$db = $this->_db; | ||||
| 		$nullDate = $db->getNullDate(); | ||||
|  | ||||
| 		if (!is_array($ids)) | ||||
| 		{ | ||||
| 			return; | ||||
| 		} | ||||
|  | ||||
| 		// this int will hold the checked item count | ||||
| 		$results = 0; | ||||
|  | ||||
| 		foreach ($ids as $tn) | ||||
| 		{ | ||||
| 			// make sure we get the right tables based on prefix | ||||
| 			if (stripos($tn, $app->getCfg('dbprefix')) !== 0) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
|  | ||||
| 			$fields = $db->getTableColumns($tn); | ||||
|  | ||||
| 			if (!(isset($fields['checked_out']) && isset($fields['checked_out_time']))) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
|  | ||||
| 			$query = $db->getQuery(true) | ||||
| 				->update($db->quoteName($tn)) | ||||
| 				->set('checked_out = 0') | ||||
| 				->set('checked_out_time = ' . $db->quote($nullDate)) | ||||
| 				->where('checked_out > 0'); | ||||
|  | ||||
| 			$db->setQuery($query); | ||||
| 			if ($db->execute()) | ||||
| 			{ | ||||
| 				$results = $results + $db->getAffectedRows(); | ||||
| 			} | ||||
| 		} | ||||
| 		return $results; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Get total of tables | ||||
| 	 * | ||||
| 	 * @return  int    Total to check-in tables | ||||
| 	 * | ||||
| 	 * @since   1.6 | ||||
| 	 */ | ||||
| 	public function getTotal() | ||||
| 	{ | ||||
| 		if (!isset($this->total)) | ||||
| 		{ | ||||
| 			$this->getItems(); | ||||
| 		} | ||||
| 		return $this->total; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Get tables | ||||
| 	 * | ||||
| 	 * @return  array  Checked in table names as keys and checked in item count as values | ||||
| 	 * | ||||
| 	 * @since   1.6 | ||||
| 	 */ | ||||
| 	public function getItems() | ||||
| 	{ | ||||
| 		if (!isset($this->items)) | ||||
| 		{ | ||||
| 			$app = JFactory::getApplication(); | ||||
| 			$db = $this->_db; | ||||
| 			$tables = $db->getTableList(); | ||||
|  | ||||
| 			// this array will hold table name as key and checked in item count as value | ||||
| 			$results = array(); | ||||
|  | ||||
| 			foreach ($tables as $i => $tn) | ||||
| 			{ | ||||
| 				// make sure we get the right tables based on prefix | ||||
| 				if (stripos($tn, $app->getCfg('dbprefix')) !== 0) | ||||
| 				{ | ||||
| 					unset($tables[$i]); | ||||
| 					continue; | ||||
| 				} | ||||
|  | ||||
| 				if ($this->getState('filter.search') && stripos($tn, $this->getState('filter.search')) === false) | ||||
| 				{ | ||||
| 					unset($tables[$i]); | ||||
| 					continue; | ||||
| 				} | ||||
|  | ||||
| 				$fields = $db->getTableColumns($tn); | ||||
|  | ||||
| 				if (!(isset($fields['checked_out']) && isset($fields['checked_out_time']))) | ||||
| 				{ | ||||
| 					unset($tables[$i]); | ||||
| 					continue; | ||||
| 				} | ||||
| 			} | ||||
| 			foreach ($tables as $tn) | ||||
| 			{ | ||||
| 				$query = $db->getQuery(true) | ||||
| 					->select('COUNT(*)') | ||||
| 					->from($db->quoteName($tn)) | ||||
| 					->where('checked_out > 0'); | ||||
|  | ||||
| 				$db->setQuery($query); | ||||
| 				if ($db->execute()) | ||||
| 				{ | ||||
| 					$results[$tn] = $db->loadResult(); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					continue; | ||||
| 				} | ||||
| 			} | ||||
| 			$this->total = count($results); | ||||
| 			if ($this->getState('list.ordering') == 'table') | ||||
| 			{ | ||||
| 				if ($this->getState('list.direction') == 'asc') | ||||
| 				{ | ||||
| 					ksort($results); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					krsort($results); | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				if ($this->getState('list.direction') == 'asc') | ||||
| 				{ | ||||
| 					asort($results); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					arsort($results); | ||||
| 				} | ||||
| 			} | ||||
| 			$results = array_slice($results, $this->getState('list.start'), $this->getState('list.limit') ? $this->getState('list.limit') : null); | ||||
| 			$this->items = $results; | ||||
| 		} | ||||
| 		return $this->items; | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 alazhar
					alazhar