/**
	 * Tests the JDatabaseQuery::quoteName method for an expected exception.
	 *
	 * @return  void
	 *
	 * @covers             JDatabaseQuery::quoteName
	 * @expectedException  RuntimeException
	 * @since              11.3
	 */
	public function testQuoteNameException()
	{
		// Override the internal database for testing.
		$this->_instance->db = new stdClass;

		$this->_instance->quoteName('foo');
	}
 /**
  * Tests the JDatabaseQuery::quoteName method for an expected exception.
  *
  * @return  void
  *
  * @covers             JDatabaseQuery::quoteName
  * @expectedException  RuntimeException
  * @since              11.3
  */
 public function testQuoteNameException()
 {
     // Override the internal database for testing.
     TestReflection::setValue($this->_instance, 'db', new stdClass());
     $this->_instance->quoteName('foo');
 }
示例#3
0
 /**
  * Process the query filters.
  *
  * @param JDatabaseQuery $query   The query object.
  * @param array          $filters The filters values.
  *
  * @return  JDatabaseQuery The db query object.
  */
 protected function processFilters(\JDatabaseQuery $query, $filters = array())
 {
     $user = $this->container->get('user');
     $db = $this->container->get('db');
     $date = $this->container->get('date');
     // If no state filter, set published >= 0
     if (!isset($filters['user.state']) && property_exists($this->getTable(), 'state')) {
         $query->where($query->quoteName('user.state') . ' >= 0');
     }
     // Category
     // =====================================================================================
     $category = $this->getCategory();
     if ($category->id != 1 && in_array('category.lft', $this->filterFields) && in_array('category.rgt', $this->filterFields)) {
         $query->where($query->format('(%n >= %a AND %n <= %a)', 'category.lft', $category->lft, 'category.rgt', $category->rgt));
     }
     // Max Level
     // =====================================================================================
     $maxLevel = $this->state->get('filter.max_category_levels', -1);
     if ($maxLevel > 0) {
         $query->where($query->quoteName('category.level') . " <= " . $maxLevel);
     }
     // Edit Access
     // =====================================================================================
     if ($this->state->get('filter.unpublished')) {
         $query->where('user.state >= 0');
     } else {
         $query->where('user.state > 0');
         $nullDate = $query->Quote($db->getNullDate());
         $nowDate = $query->Quote($date->toSQL(true));
         if (in_array('user.publish_up', $this->filterFields) && in_array('user.publish_down', $this->filterFields)) {
             $query->where('(user.publish_up = ' . $nullDate . ' OR user.publish_up <= ' . $nowDate . ')');
             $query->where('(user.publish_down = ' . $nullDate . ' OR user.publish_down >= ' . $nowDate . ')');
         }
     }
     // View Level
     // =====================================================================================
     if ($access = $this->state->get('filter.access') && in_array('user.access', $this->filterFields)) {
         $query->where(new InCompare('user.access', $user->getAuthorisedViewLevels()));
     }
     // Language
     // =====================================================================================
     if ($this->state->get('filter.language') && in_array('a.language', $this->filterFields)) {
         $lang_code = $db->quote(JFactory::getLanguage()->getTag());
         $query->where("a.language IN ('{$lang_code}', '*')");
     }
     return parent::processFilters($query, $filters);
 }
示例#4
0
 /**
  * Process ordering query.
  *
  * @param \JDatabaseQuery $query     The query object.
  * @param string          $ordering  The ordering string.
  * @param string          $direction ASC or DESC.
  *
  * @return  void
  */
 protected function processOrdering(\JDatabaseQuery $query, $ordering = null, $direction = null)
 {
     $ordering = $ordering ?: $this->get('list.ordering');
     // If no ordering set, ignore this function.
     if (!$ordering) {
         return;
     }
     $direction = $direction ?: $this->get('list.direction', 'ASC');
     $ordering = explode(',', $ordering);
     // Add quote
     foreach ($ordering as $key => &$value) {
         // Remove extra spaces
         $value = preg_replace('/\\s+/', ' ', trim($value));
         $value = StringHelper::explode(' ', $value);
         if (!$this->filterField($value[0])) {
             unset($ordering[$key]);
             continue;
         }
         $value[0] = $this->mapField($value[0]);
         // Ignore expression
         if (!empty($value[0]) && $value[0][strlen($value[0]) - 1] != ')') {
             $value[0] = $query->quoteName($value[0]);
         }
         $value = implode(' ', $value);
     }
     $ordering = implode(', ', $ordering);
     if (!$ordering) {
         return;
     }
     $query->order($ordering . ' ' . $direction);
 }
示例#5
0
 /**
  * Process the query filters.
  *
  * @param JDatabaseQuery $query   The query object.
  * @param array          $filters The filters values.
  *
  * @return  JDatabaseQuery The db query object.
  */
 protected function processFilters(\JDatabaseQuery $query, $filters = array())
 {
     // If no state filter, set published >= 0
     if (!isset($filters['list.state']) && property_exists($this->getTable(), 'state')) {
         $query->where($query->quoteName('list.state') . ' >= 0');
     }
     return parent::processFilters($query, $filters);
 }
示例#6
0
 /**
  * registerQueryTables
  *
  * @param DatabaseQuery $query
  *
  * @return  DatabaseQuery
  */
 public function registerQueryTables(DatabaseQuery $query)
 {
     foreach ($this->tables as $alias => $table) {
         if ($table['join'] == 'FROM') {
             $query->from($query->quoteName($table['name']) . ' AS ' . $query->quoteName($alias));
         } else {
             $query->join($table['join'], $query->quoteName($table['name']) . ' AS ' . $query->quoteName($alias) . ' ' . $table['condition']);
         }
     }
     return $query;
 }
示例#7
0
 /**
  * Process the query filters.
  *
  * @param JDatabaseQuery $query   The query object.
  * @param array          $filters The filters values.
  *
  * @return  JDatabaseQuery The db query object.
  */
 protected function processFilters(\JDatabaseQuery $query, $filters = array())
 {
     // If no state filter, set published >= 0
     if (!isset($filters['icon.published'])) {
         $query->where($query->quoteName('icon.published') . ' >= 0');
     }
     return parent::processFilters($query, $filters);
 }