Example #1
0
 /**
  * Return an array of Language objects, one for each
  * language the article is written in.
  *
  * @param boolean $p_excludeCurrent
  *      If true, exclude the current language from the list.
  * @param array $p_order
  *      The array of order directives in the format:
  *      array('field'=>field_name, 'dir'=>order_direction)
  *      field_name can take one of the following values:
  *        bynumber, byname, byenglish_name, bycode
  *      order_direction can take one of the following values:
  *        asc, desc
  * @return array
  */
 public function getLanguages($p_excludeCurrent = false, array $p_order = array(),
 $p_published = false)
 {
     if (!$this->exists()) {
         return array();
     }
     $tmpLanguage = new Language();
     $columnNames = $tmpLanguage->getColumnNames(true);
      $queryStr = 'SELECT '.implode(',', $columnNames).' FROM Articles, Languages '
                  .' WHERE Articles.IdLanguage = Languages.Id'
                 .' AND IdPublication = ' . $this->m_data['IdPublication']
                  .' AND NrIssue = ' . $this->m_data['NrIssue']
                  .' AND NrSection = ' . $this->m_data['NrSection']
                  .' AND Number = ' . $this->m_data['Number'];
     if ($p_excludeCurrent) {
         $queryStr .= ' AND Languages.Id != ' . $this->m_data['IdLanguage'];
      }
      if ($p_published) {
          $queryStr .= " AND Articles.Published = 'Y'";
      }
     $order = Article::ProcessLanguageListOrder($p_order);
     foreach ($order as $orderDesc) {
         $sqlOrder[] = $orderDesc['field'] . ' ' . $orderDesc['dir'];
     }
      if (count($sqlOrder) > 0) {
          $queryStr .= ' ORDER BY ' . implode(', ', $sqlOrder);
      }
      $languages = DbObjectArray::Create('Language', $queryStr);
     return $languages;
 } // fn getLanguages