Example #1
0
 /**
  * @return array
  */
 public static function GetEvents()
 {
     $tmpEvent = new Event();
     $columns = implode(',', $tmpEvent->getColumnNames(true));
     $queryStr = "SELECT {$columns} FROM Events ORDER BY Id";
     $events = DbObjectArray::Create('Event', $queryStr);
     return $events;
 }
Example #2
0
 /**
  * Return an array of all time units.
  * @return array
  */
 public static function GetTimeUnits($p_languageCode)
 {
     $queryStr = "SELECT TimeUnits.Unit, TimeUnits.Name " . " FROM TimeUnits, Languages " . " WHERE TimeUnits.IdLanguage = Languages.Id " . " AND Languages.Code = '{$p_languageCode}'" . " ORDER BY TimeUnits.Unit ASC";
     $timeUnits = DbObjectArray::Create('TimeUnit', $queryStr);
     if (count($timeUnits) == 0) {
         $queryStr = "SELECT TimeUnits.Unit, TimeUnits.Name " . " FROM TimeUnits, Languages " . " WHERE TimeUnits.IdLanguage = Languages.Id " . " AND Languages.Code = 'en'" . " ORDER BY TimeUnits.Unit ASC";
         $timeUnits = DbObjectArray::Create('TimeUnit', $queryStr);
     }
     return $timeUnits;
 }
Example #3
0
	/**
	 * Get all the actions that currently need to be performed.
	 * @return array
	 */
	public static function GetPendingActions()
	{
	    $datetime = strftime("%Y-%m-%d %H:%M:00");
        $queryStr = "SELECT * FROM ArticlePublish, Articles "
        			. " WHERE ArticlePublish.fk_article_number=Articles.Number"
                    . " AND ArticlePublish.time_action <= '$datetime'"
                    . " AND ArticlePublish.is_completed != 'Y'"
                    . " AND Articles.Published != 'N'"
                    . " ORDER BY ArticlePublish.time_action ASC";
        $result = DbObjectArray::Create('ArticlePublish', $queryStr);
        return $result;
	} // fn GetPendingActions
Example #4
0
    /**
     * Get all users matching the given parameters.
     *
     * @param boolean $p_onlyAdmin
     * @param string $p_userType
     *
     * @return array
     */
    public static function GetUsers($p_onlyAdmin = true, $p_userType = null)
    {
        global $g_ado_db;

        $constraints = array();
        if ($p_onlyAdmin) {
            $constraints[] = "Reader='N'";
        }
        if (!is_null($p_userType)) {
            $constraints[] = "fk_user_type='".$p_userType."'";
        }
        if (count($constraints) > 0) {
            $whereStr = " WHERE ".implode(" AND ", $constraints);
        }
        $sql = "SELECT * FROM liveuser_users " . $whereStr;
        return DbObjectArray::Create("User", $sql);
    } // fn GetUsers
Example #5
0
        // New Section checking
        // Verify there is a number for the section
        newSectionNumber = form.destination_section_new_id.value.trim();
        if (form.section_chooser[1].checked && (newSectionNumber == "")) {
            alert('<?php putGS("You must select a section."); ?>');
            return false;
        }

        // Verify there is a name for the section
        if (form.section_chooser[1].checked && (form.destination_section_new_name.value.trim() == "")) {
            alert('<?php putGS("You must specify a name for the section."); ?>');
            return false;
        }

        // Check if user specified an existing section in the "New Section" dialog.
        existingSections = [ <?php p(implode(',', DbObjectArray::GetColumn($allSections, 'Number'))); ?> ];
        for (i = 0; i < existingSections.length; i++ ) {
            if (newSectionNumber == existingSections[i]) {
                alert('<?php putGS("The section number specified already exists, please specify a different value or use the dropdown to find an existing section."); ?>');
                return false;
            }
        }
    }
    return true;
} // fn CustomValidator_DuplicateSection
</script>

<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1" class="action_buttons" style="padding-top: 5px;">
<TR>
	<TD><A HREF="/<?php echo $ADMIN; ?>/sections/?Pub=<?php p($f_src_publication_id); ?>&Issue=<?php p($f_src_issue_number); ?>&Language=<?php p($f_language_id); ?>"><IMG SRC="<?php echo $Campsite["ADMIN_IMAGE_BASE_URL"]; ?>/left_arrow.png" BORDER="0"></A></TD>
	<TD><A HREF="/<?php echo $ADMIN; ?>/sections/?Pub=<?php p($f_src_publication_id); ?>&Issue=<?php p($f_src_issue_number); ?>&Language=<?php p($f_language_id); ?>"><B><?php  putGS("Section List"); ?></B></A></TD>
Example #6
0
 /**
  * @return array
  */
 public static function GetAuthors()
 {
     $tmpAuthor = new Author();
     $columns = implode(',', $tmpAuthor->getColumnNames(true));
     $queryStr = "SELECT {$columns}\n            FROM " . self::TABLE . '
         ORDER BY first_name';
     $authors = DbObjectArray::Create('Author', $queryStr);
     return $authors;
 }
Example #7
0
    /**
	 * Get the Blogs that have the given Topic.
	 * @param int $p_fk_topic_id
	 * @return array
	 */
	public static function XXGetBlogsWithTopic($p_fk_topic_id)
	{
		global $g_ado_db;

		$blogIds = array();
		$queryStr = "SELECT fk_blog_id FROM BlogTopics WHERE fk_topic_id = $p_fk_topic_id";
		$rows = $g_ado_db->GetAll($queryStr);
		if (is_array($rows)) {
			foreach ($rows as $row) {
				$blogIds[] = $row['fk_blog_id'];
			}
		}

		$queryStr = 'SELECT DISTINCT(BlogType) FROM TopicFields';
		$rows = $g_ado_db->GetAll($queryStr);
		foreach ($rows as $row) {
			$queryStr = "SELECT FieldName FROM TopicFields WHERE BlogType = '"
						. $row['BlogType'] . "'";
			$rows2 = $g_ado_db->GetAll($queryStr);
			if (!is_array($rows2) || sizeof($rows2) == 0) {
				continue;
			}
			$columns = '';
			foreach ($rows2 as $row2) {
				$columns .= " OR F" . $row2['FieldName'] . " = $p_fk_topic_id";
			}
			$columns = substr($columns, 3);
			$queryStr = "SELECT DISTINCT(fk_blog_id) FROM X" . $row['BlogType']
						. " WHERE $columns";
			$rows2 = $g_ado_db->GetAll($queryStr);
			if (!is_array($rows2)) {
				continue;
			}
			foreach ($rows2 as $row2) {
				foreach ($row2 as $fieldName=>$value) {
					$blogIds[] = $value;
				}
			}
		}

		if (sizeof($blogIds) == 0) {
			return null;
		}

		$blogIds = array_unique($blogIds);
		$tmpBlog = new Blog();
		$columnNames = implode(',', $tmpBlog->getColumnNames(true));
		$queryStr = "SELECT $columnNames FROM Blogs WHERE Number IN ("
					. implode(', ', $blogIds) . ")";
    	return DbObjectArray::Create('Blog', $queryStr);
	} // fn GetBlogsWithTopic
Example #8
0
 /**
  * Return all publications as an array of Publication objects.
  *
  * @param string $p_name
  * @param int $p_aliasId
  * @param array $p_sqlOptions
  *
  * @return array
  */
 public static function GetPublications($p_name = null, $p_aliasId = null, $p_sqlOptions = null)
 {
     global $g_ado_db;
     if (is_null($p_sqlOptions)) {
         $p_sqlOptions = array();
     }
     if (!isset($p_sqlOptions["ORDER BY"])) {
         $p_sqlOptions["ORDER BY"] = array("Name" => "ASC");
     }
     $tmpPub = new Publication();
     $columns = $tmpPub->getColumnNames(true);
     $queryStr = 'SELECT ' . implode(',', $columns) . ', Aliases.Name as Alias' . ', URLTypes.Name as URLType' . ', Languages.OrigName as NativeName' . ' FROM Publications, Languages, Aliases, URLTypes' . ' WHERE Publications.IdDefaultAlias = Aliases.Id ' . ' AND Publications.IdURLType = URLTypes.Id ' . ' AND Publications.IdDefaultLanguage = Languages.Id ';
     if (is_string($p_name)) {
         $queryStr .= " AND Publications.Name=" . $g_ado_db->escape($p_name);
     }
     if (is_numeric($p_aliasId)) {
         $queryStr .= " AND Publications.IdDefaultAlias={$p_aliasId}";
     }
     $queryStr = DatabaseObject::ProcessOptions($queryStr, $p_sqlOptions);
     $publications = DbObjectArray::Create('Publication', $queryStr);
     return $publications;
 }
Example #9
0
 /**
  * Get the logs.
  *
  * @param int $p_eventId
  * @param array $p_sqlOptions
  *
  * @return array
  */
 public static function GetLogs($p_eventId = null, $p_sqlOptions = null)
 {
     if (is_null($p_sqlOptions) || !isset($p_sqlOptions['ORDER BY'])) {
         $p_sqlOptions['ORDER BY'] = array('time_created' => 'DESC');
     }
     $tmpLog = new Log();
     $columns = $tmpLog->getColumnNames(true);
     $queryStr = "SELECT " . implode(", ", $columns) . ", INET_NTOA(Log.user_ip) AS user_ip_addr" . ", liveuser_users.Name as full_name" . ", liveuser_users.UName as user_name" . " FROM Log" . " LEFT JOIN liveuser_users" . " ON Log.fk_user_id = liveuser_users.Id";
     if (!is_null($p_eventId)) {
         $queryStr .= " WHERE Log.fk_event_id={$p_eventId}";
     }
     $queryStr = DatabaseObject::ProcessOptions($queryStr, $p_sqlOptions);
     $logLines = DbObjectArray::Create('Log', $queryStr);
     return $logLines;
 }
Example #10
0
 /**
  * Return an array of Language objects based on the given contraints.
  *
  * @param int $p_id
  * @param string $p_languageCode
  * @param string $p_name
  * @param array $p_excludedLanguages
  * @param array $p_order
  * @return array
  */
 public static function GetLanguages($p_id = null, $p_languageCode = null, $p_name = null, array $p_excludedLanguages = array(), array $p_order = array(), $p_skipCache = false)
 {
     global $g_ado_db;
     if (!$p_skipCache && CampCache::IsEnabled()) {
         $paramsArray['id'] = is_null($p_id) ? 'null' : $p_id;
         $paramsArray['language_code'] = is_null($p_languageCode) ? 'null' : $p_languageCode;
         $paramsArray['name'] = is_null($p_name) ? 'null' : $p_name;
         $paramsArray['excluded_languages'] = $p_excludedLanguages;
         $paramsArray['order'] = $p_order;
         $cacheListObj = new CampCacheList($paramsArray, __METHOD__);
         $languages = $cacheListObj->fetchFromCache();
         if ($languages !== false && is_array($languages)) {
             return $languages;
         }
     }
     $selectClauseObj = new SQLSelectClause();
     $tmpLanguage = new Language();
     $selectClauseObj->setTable($tmpLanguage->getDbTableName());
     if (!is_null($p_id)) {
         $selectClauseObj->addWhere($g_ado_db->escapeKeyVal('Id', (int) $p_id));
     }
     if (!is_null($p_languageCode)) {
         $selectClauseObj->addWhere($g_ado_db->escapeKeyVal('Code', $p_languageCode));
     }
     if (!is_null($p_name)) {
         $selectClauseObj->addWhere($g_ado_db->escapeKeyVal('Name', $p_name));
     }
     if (count($p_excludedLanguages) > 0) {
         $excludedLanguages = array();
         foreach ($p_excludedLanguages as $excludedLanguage) {
             $excludedLanguages[] = (int) $excludedLanguage;
         }
         $selectClauseObj->addWhere("Id NOT IN (" . implode(', ', $excludedLanguages) . ")");
     }
     $order = Language::ProcessLanguageListOrder($p_order);
     foreach ($order as $orderDesc) {
         $selectClauseObj->addOrderBy($orderDesc['field'] . ' ' . $orderDesc['dir']);
     }
     $selectClause = $selectClauseObj->buildQuery();
     $languages = DbObjectArray::Create('Language', $selectClause);
     if (!$p_skipCache && CampCache::IsEnabled()) {
         $cacheListObj->storeInCache($languages);
     }
     return $languages;
 }
Example #11
0
    /**
     * Get all comments associated with the given article.
     *
     * @param int $p_articleNumber
     * @param int $p_languageId
     * @param string $p_status
     *      This can be NULL if you dont care about the status,
     *      "approved" or "unapproved".
     * @param boolean $p_countOnly
     * @return array
     */
    public static function GetArticleComments($p_articleNumber, $p_languageId,
                                              $p_status = null, $p_countOnly = false,
                                              $p_skipCache = true)
    {
        global $PHORUM, $g_ado_db;

        if (CampCache::IsEnabled() && !$p_skipCache) {
        	$cacheKey = __METHOD__ . '_' . (int)$p_articleNumber . '_'
        	. (int)$p_languageId . '_' . $p_status . '_' . (int)$p_count_only;
        	$result = CampCache::singleton()->fetch($cacheKey);
            if ($result !== false) {
                return $result;
            }
        }

        $threadId = ArticleComment::GetCommentThreadId($p_articleNumber, $p_languageId);
        if (!$threadId) {
            $result = $p_countOnly ? 0 : null;
        	if (CampCache::IsEnabled()) {
        		CampCache::singleton()->store($cacheKey, $result);
        	}
        	return $result;
        }

        // Are we counting or getting the comments?
        $selectClause = "*";
        if ($p_countOnly) {
            $selectClause = "COUNT(*)";
        }

        // Only getting comments with a specific status?
        $whereClause = "";
        if (!is_null($p_status)) {
            if ($p_status == "approved") {
                $whereClause = " AND status=".PHORUM_STATUS_APPROVED;
            } elseif ($p_status == "unapproved") {
                $whereClause = " AND status=".PHORUM_STATUS_HIDDEN;
            }
        }
        $queryStr = "SELECT $selectClause "
                    ." FROM ".$PHORUM['message_table']
                    ." WHERE thread=$threadId"
                    ." AND message_id != thread"
                    . $whereClause
                    ." ORDER BY message_id";
        if ($p_countOnly) {
        	$result = $g_ado_db->GetOne($queryStr);
        } else {
	        $result = DbObjectArray::Create("Phorum_message", $queryStr);
        }
        if (CampCache::IsEnabled() && !$p_skipCache) {
        	CampCache::singleton()->store($cacheKey, $result, self::DEFAULT_TTL);
        }
        return $result;
    } // fn GetArticleComments
Example #12
0
    exit;
}
$publicationObj = new Publication($Pub);
if (!$publicationObj->exists()) {
    camp_html_display_error(getGS('Publication does not exist.'));
    exit;
}
$issueObj = new Issue($Pub, $Language, $Issue);
if (!$issueObj->exists()) {
    camp_html_display_error(getGS('Issue does not exist.'));
    exit;
}
$allLanguages = Language::GetLanguages(null, null, null, array(), array(), true);
// Get translations of this issue
$issueTranslations = Issue::GetIssues($Pub, null, $Issue, null, null, false, null, true);
$excludeLanguageIds = DbObjectArray::GetColumn($issueTranslations, 'IdLanguage');
$allEvents = IssuePublish::GetIssueEvents($Pub, $Issue, $Language);
$publish_date = date("Y-m-d");
$publish_hour = date("H") + 1;
$publish_min = "00";
camp_html_content_top(getGS('Change issue details'), array('Pub' => $publicationObj, 'Issue' => $issueObj), true, true);
$url_args1 = "Pub={$Pub}";
$url_args2 = $url_args1 . "&Issue={$Issue}&Language={$Language}";
$url_args3 = "f_publication_id={$Pub}&f_issue_number={$Issue}&f_language_id={$Language}";
if (Issue::GetNumIssues($Pub) <= 0) {
    $url_add = "add_new.php";
} else {
    $url_add = "qadd.php";
}
//@New theme management
$resourceId = new ResourceId('Publication/Edit');
Example #13
0
<?php

require_once $GLOBALS['g_campsiteDir'] . "/{$ADMIN_DIR}/topics/topics_common.php";
$f_show_languages = camp_session_get('f_show_languages', array());
$topics = Topic::GetTree();
// return value is sorted by language
$allLanguages = Language::GetLanguages(null, null, null, array(), array(), true);
$loginLanguageId = 0;
$loginLanguage = Language::GetLanguages(null, camp_session_get('TOL_Language', 'en'), null, array(), array(), true);
if (is_array($loginLanguage) && count($loginLanguage) > 0) {
    $loginLanguage = array_pop($loginLanguage);
    $loginLanguageId = $loginLanguage->getLanguageId();
}
if (count($f_show_languages) <= 0) {
    $f_show_languages = DbObjectArray::GetColumn($allLanguages, 'Id');
}
$crumbs = array();
$crumbs[] = array(getGS("Configure"), "");
$crumbs[] = array(getGS("Topics"), "");
echo camp_html_breadcrumbs($crumbs);
camp_html_display_msgs("0.5em", 0);
?>

<form action="" method="post">
<fieldset class="controls">
    <legend><?php 
putGS("Show languages");
?>
</legend>
    <div class="buttons">
        <input type="button" value="<?php 
Example #14
0
');
            return false;
        }

        // Verify there is a name for the section
        if (form.section_chooser[1].checked && (form.destination_section_new_name.value.trim() == "")) {
            alert('<?php 
putGS("You must specify a name for the section.");
?>
');
            return false;
        }

        // Check if user specified an existing section in the "New Section" dialog.
        existingSections = [ <?php 
p(implode(',', DbObjectArray::GetColumn($allSections, 'Number')));
?>
 ];
        for (i = 0; i < existingSections.length; i++ ) {
            if (newSectionNumber == existingSections[i]) {
                alert('<?php 
putGS("The section number specified already exists, please specify a different value or use the dropdown to find an existing section.");
?>
');
                return false;
            }
        }
    }
    return true;
} // fn CustomValidator_DuplicateSection
</script>
Example #15
0
 /**
  * Return an array of all URL types.
  * @return array
  */
 public static function GetUrlTypes()
 {
     $queryStr = 'SELECT * FROM URLTypes';
     $urlTypes = DbObjectArray::Create('UrlType', $queryStr);
     return $urlTypes;
 }
Example #16
0
	/**
	 * Get an array of users who have uploaded images.
	 * @return array
	 */
	public static function GetUploadUsers()
	{
		$tmpUser = new User();
		$columnNames = $tmpUser->getColumnNames();
		$queryColumnNames = array();
		foreach ($columnNames as $columnName) {
			$queryColumnNames[] = 'liveuser_users.'.$columnName;
		}
		$queryColumnNames = implode(",", $queryColumnNames);
		$queryStr = 'SELECT DISTINCT liveuser_users.Id, '.$queryColumnNames
					.' FROM Images, liveuser_users '
                    .' WHERE Images.UploadedByUser = liveuser_users.Id';
		$users = DbObjectArray::Create('User', $queryStr);
		return $users;
	} // fn GetUploadUsers
Example #17
0
 /**
  * Get all the actions that currently need to be performed.
  * @return array
  */
 public static function GetPendingActions()
 {
     $datetime = strftime("%Y-%m-%d %H:%M:00");
     $queryStr = "SELECT * FROM IssuePublish " . " WHERE time_action <= '{$datetime}'" . " AND is_completed != 'Y'" . " ORDER BY time_action ASC";
     $result = DbObjectArray::Create('IssuePublish', $queryStr);
     return $result;
 }
Example #18
0
}
// When the user selects a language the form is submitted to the same page (translation.php).
// Read article translation form input values for the case when the page has been reloaded
// because of language select.
$f_translation_title = Input::Get('f_translation_title', 'string', '', true);
$f_language_selected = Input::Get('f_translation_language', 'int', 0, true);
$f_translation_language = Input::Get('f_translation_language', 'int', 0, true);
if ($f_publication_id > 0) {
    $f_translation_issue_name = Input::Get('f_issue_name', 'string', $issueObj->getName(), true);
    $f_translation_issue_urlname = Input::Get('f_issue_urlname', 'string', $issueObj->getUrlName(), true);
    $f_translation_section_name = Input::Get('f_section_name', 'string', $sectionObj->getName(), true);
    $f_translation_section_urlname = Input::Get('f_section_urlname', 'string', $sectionObj->getUrlName(), true);
}
$allLanguages = Language::GetLanguages(null, null, null, array(), array(array('field' => 'byname', 'dir' => 'asc')), true);
$articleLanguages = $articleObj->getLanguages();
$articleLanguages = DbObjectArray::GetColumn($articleLanguages, "Id");
if ($f_language_selected > 0 && $f_issue_number > 0) {
    $translationIssueObj = new Issue($f_publication_id, $f_language_selected, $f_issue_number);
    $translationSectionObj = new Section($f_publication_id, $f_issue_number, $f_language_selected, $f_section_number);
}
if ($f_publication_id > 0) {
    $topArray = array('Pub' => $publicationObj, 'Issue' => $issueObj, 'Section' => $sectionObj, 'Article' => $articleObj);
    camp_html_content_top(getGS('Translate article'), $topArray, true, true);
} else {
    $crumbs = array();
    $crumbs[] = array(getGS("Actions"), "");
    $crumbs[] = array(getGS('Translate article'), "");
    echo camp_html_breadcrumbs($crumbs);
}
?>
<table cellpadding="1" cellspacing="0" class="action_buttons" style="padding-top: 10px;">
Example #19
0
 /**
  * Get the $p_max number of the most recently modified articles.
  * @param int $p_max
  * @return array
  */
 public static function GetRecentlyModifiedArticles($p_max)
 {
     $queryStr = "SELECT * FROM Articles "
                ." ORDER BY time_updated DESC"
                ." LIMIT $p_max";
     $result = DbObjectArray::Create('Article', $queryStr);
     return $result;
 } // fn GetRecentlyModifiedArticles
Example #20
0
 /**
  * @param array $p_sqlOptions
  * @param boolean $p_update
  * @param boolean $p_useFilter
  *		filter templates matching setting in SystemPrefs
  * @param boolean $p_strict
  *      if true, retrieves only template (tpl) files
  *
  * @return array
  */
 public static function GetAllTemplates($p_sqlOptions = null, $p_update = true, $p_useFilter = false, $p_strict = false)
 {
     if ($p_update) {
         self::UpdateStatus();
     }
     $queryStr = 'SELECT * FROM Templates';
     if ($p_strict) {
         $queryStr .= ' WHERE Type < 5';
     }
     if ($p_useFilter && ($rexeg = self::GetTemplateFilterRegex(true))) {
         $queryStr .= $p_strict == false ? ' WHERE ' : ' AND ';
         $queryStr .= 'Name NOT REGEXP "' . self::GetTemplateFilterRegex(true) . '"';
     }
     if (!is_null($p_sqlOptions)) {
         $queryStr = DatabaseObject::ProcessOptions($queryStr, $p_sqlOptions);
     } else {
         $queryStr .= ' ORDER BY Level ASC, Name ASC';
     }
     $templates = DbObjectArray::Create('Template', $queryStr);
     return $templates;
 }
Example #21
0
 /**
  * Do a simple search.
  *
  * @param array $p_columns
  *		Array of arrays of two strings: column name and search value.
  * @param array $p_sqlOptions
  *		See ProcessOptions().
  *
  * @return array
  */
 public static function Search($p_className, $p_columns = null, $p_sqlOptions = null)
 {
     global $g_ado_db;
     if (!class_exists($p_className)) {
         return array();
     }
     $tmpObj = new $p_className();
     $queryStr = "SELECT * FROM " . $tmpObj->m_dbTableName;
     if (is_array($p_columns) && count($p_columns) > 0) {
         $contraints = array();
         foreach ($p_columns as $item) {
             if (count($item) == 2) {
                 list($columnName, $value) = $item;
                 $contraints[] = $g_ado_db->escapeKeyVal($columnName, $value);
             }
         }
         $queryStr .= " WHERE " . implode(" AND ", $contraints);
     }
     $queryStr = DatabaseObject::ProcessOptions($queryStr, $p_sqlOptions);
     $dbObjects = DbObjectArray::Create($p_className, $queryStr);
     return $dbObjects;
 }
Example #22
0
 /**
  * Get the Articles that have the given Topic.
  * @param  int   $p_topicId
  * @return array
  */
 public static function GetArticlesWithTopic($p_topicId)
 {
     global $g_ado_db;
     $articleIds = array();
     $queryStr = "SELECT NrArticle FROM ArticleTopics WHERE Topicid = {$p_topicId}";
     $rows = $g_ado_db->GetAll($queryStr);
     if (is_array($rows)) {
         foreach ($rows as $row) {
             $articleIds[] = $row['NrArticle'];
         }
     }
     $queryStr = 'SELECT DISTINCT(ArticleType) FROM TopicFields';
     $rows = $g_ado_db->GetAll($queryStr);
     foreach ($rows as $row) {
         $queryStr = "SELECT FieldName FROM TopicFields WHERE ArticleType = '" . $row['ArticleType'] . "'";
         $rows2 = $g_ado_db->GetAll($queryStr);
         if (!is_array($rows2) || sizeof($rows2) == 0) {
             continue;
         }
         $columns = '';
         foreach ($rows2 as $row2) {
             $columns .= " OR F" . $row2['FieldName'] . " = {$p_topicId}";
         }
         $columns = substr($columns, 3);
         $queryStr = "SELECT DISTINCT(NrArticle) FROM X" . $row['ArticleType'] . " WHERE {$columns}";
         $rows2 = $g_ado_db->GetAll($queryStr);
         if (!is_array($rows2)) {
             continue;
         }
         foreach ($rows2 as $row2) {
             foreach ($row2 as $fieldName => $value) {
                 $articleIds[] = $value;
             }
         }
     }
     if (sizeof($articleIds) == 0) {
         return null;
     }
     $articleIds = array_unique($articleIds);
     $tmpArticle = new Article();
     $columnNames = implode(',', $tmpArticle->getColumnNames(true));
     $queryStr = "SELECT {$columnNames} FROM Articles WHERE Number IN (" . implode(', ', $articleIds) . ")";
     return DbObjectArray::Create('Article', $queryStr);
 }
Example #23
0
	/**
	 * Get all the languages to which this issue has been translated.
	 *
	 * @param boolean $p_getUnusedLanguagesOnly
	 * 		Reverses the search and finds only those languages which this
	 * 		issue has not been translated into.
	 * @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
	 * @param boolean $p_allIssues
	 *      If true return all the languages in which all issues of the
	 *      publication were translated.
	 * @return array
	 * 		Return an array of Language objects.
	 */
	public function getLanguages($p_getUnusedLanguagesOnly = false,
	$p_excludeCurrent = false, array $p_order = array(), $p_allIssues = false,
	$p_published = false)
	{
		$tmpLanguage = new Language();
		$columnNames = $tmpLanguage->getColumnNames(true);
		if ($p_getUnusedLanguagesOnly) {
			$queryStr = "SELECT ".implode(',', $columnNames)
						." FROM Languages LEFT JOIN Issues "
						." ON Issues.IdPublication = ".$this->m_data['IdPublication'];
            if (!$p_allIssues) {
                $queryStr .= " AND Issues.Number = ".$this->m_data['Number'];
            }
            if ($p_published) {
                $queryStr .= " AND Issues.Published = 'Y'";
            }
            $queryStr .= " AND Issues.IdLanguage = Languages.Id "
                      ." WHERE Issues.IdPublication IS NULL";
		} else {
			$queryStr = "SELECT ".implode(',', $columnNames)
						." FROM Languages, Issues "
						." WHERE Issues.IdPublication = ".$this->m_data['IdPublication'];
            if (!$p_allIssues) {
                $queryStr .= " AND Issues.Number = ".$this->m_data['Number'];
            }
            $queryStr .= " AND Issues.IdLanguage = Languages.Id ";
            if ($p_excludeCurrent) {
                $queryStr .= " AND Languages.Id != " . $this->m_data['IdLanguage'];
            }
            if ($p_published) {
                $queryStr .= " AND Issues.Published = 'Y'";
            }
		}
		list($languagesKey) = $tmpLanguage->getKeyColumnNames();
		$queryStr .= " GROUP BY $languagesKey";
        $order = Issue::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
Example #24
0
        $f_destination_section_number = $tmpSection->getSectionNumber();
    } else {
        $tmpSection = new Section($f_destination_publication_id, $f_destination_issue_number, $firstArticle->getLanguageId(), $f_destination_section_number);
        if (!$tmpSection->exists()) {
            $f_destination_section_number = 0;
        }
    }
}
// Special case:
// You cannot copy the articles if there is no cooresponding translated issue/section
// in the destination issue.  For example, you cannot copy a french article to an
// issue that has ONLY an english translation.
$issueLanguages = array();
if ($f_destination_issue_number > 0) {
    $issueTranslations = Issue::GetIssues($f_destination_publication_id, null, $f_destination_issue_number, null, null, false, null, true);
    $issueLanguages = DbObjectArray::GetColumn($issueTranslations, "IdLanguage");
}
// $actionDenied is TRUE if any articles cannot be moved/duped.
$actionDenied = false;
foreach ($articles as $articleNumber => $languageArray) {
    foreach ($languageArray as $languageId => $article) {
        $tmpActionDenied = count($issueLanguages) > 0 && !in_array($languageId, $issueLanguages);
        $actionDenied |= $tmpActionDenied;
        // Uncheck any articles that cannot be moved/duped.
        if ($tmpActionDenied) {
            unset($doAction[$articleNumber][$languageId]);
            if (isset($doAction[$articleNumber]) && count($doAction[$articleNumber]) == 0) {
                unset($doAction[$articleNumber]);
            }
        }
    }
Example #25
0
if (!in_array($f_language_selected, DbObjectArray::GetColumn($allArticleLanguages, 'Id'))) {
    $f_language_selected = 0;
}
$sqlOptions = array("LIMIT" => array("START" => $f_article_offset, "MAX_ROWS" => $ArticlesPerPage));
if ($f_language_selected) {
    // Only show a specific language.
    $totalArticles = Article::GetArticles($f_publication_id, $f_issue_number, $f_section_number, $f_language_selected, null, true);
    $allArticles = Article::GetArticles($f_publication_id, $f_issue_number, $f_section_number, $f_language_selected, $sqlOptions);
    $numUniqueArticles = $totalArticles;
    $numUniqueArticlesDisplayed = count($allArticles);
} else {
    // Show articles in all languages.
    $totalArticles = Article::GetArticles($f_publication_id, $f_issue_number, $f_section_number, null, null, true);
    $allArticles = Article::GetArticlesGrouped($f_publication_id, $f_issue_number, $f_section_number, null, $f_language_id, $sqlOptions);
    $numUniqueArticles = Article::GetArticlesGrouped($f_publication_id, $f_issue_number, $f_section_number, null, null, null, true);
    $numUniqueArticlesDisplayed = count(array_unique(DbObjectArray::GetColumn($allArticles, 'Number')));
}
$numArticlesThisPage = count($allArticles);
$previousArticleNumber = 0;
$pagerUrl = "index.php?f_publication_id=" . $f_publication_id . "&f_issue_number=" . $f_issue_number . "&f_section_number=" . $f_section_number . "&f_language_id=" . $f_language_id . "&f_language_selected=" . $f_language_selected . "&";
$pager = new SimplePager($numUniqueArticles, $ArticlesPerPage, $offsetVarName, $pagerUrl);
$topArray = array('Pub' => $publicationObj, 'Issue' => $issueObj, 'Section' => $sectionObj);
camp_html_content_top(getGS('Article List') . ': ' . $this->view->escape($sectionObj->getName()), $topArray);
?>
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1" class="action_buttons" style="padding-top: 5px;">
<TR>
	<TD><A HREF="/<?php 
echo $ADMIN;
?>
/sections/?Pub=<?php 
p($f_publication_id);
 /**
  * Return an array of SubscriptionSection objects matching the
  * search criteria.
  *
  * @param int $p_subscriptionId
  * @param int $p_sectionId
  * @param int $p_languageId
  * @return array
  */
 public static function GetSubscriptionSections($p_subscriptionId, $p_sectionId = null, $p_languageId = null)
 {
     $queryStr = "SELECT SubsSections.*, Sections.Name, Subscriptions.Type, " . "Languages.Name as LangName, Languages.OrigName as LangOrigName" . " FROM Subscriptions, Sections, SubsSections LEFT JOIN Languages " . " ON SubsSections.IdLanguage = Languages.Id " . " WHERE Subscriptions.Id = {$p_subscriptionId} " . " AND Subscriptions.Id = SubsSections.IdSubscription " . " AND Subscriptions.IdPublication = Sections.IdPublication " . " AND SubsSections.SectionNumber = Sections.Number ";
     if (!is_null($p_sectionId)) {
         $queryStr .= " AND SubsSections.SectionNumber = {$p_sectionId}";
     }
     if (!is_null($p_languageId)) {
         $queryStr .= " AND SubsSections.IdLanguage = {$p_languageId}";
     }
     $queryStr .= " GROUP BY SectionNumber, IdLanguage ORDER BY SectionNumber, LangName";
     $sections = DbObjectArray::Create('SubscriptionSection', $queryStr);
     return $sections;
 }
Example #27
0
// Only for the article screens.
$publicationObj = null;
$issueObj = null;
$sectionObj = null;
if ($f_publication_id > 0) {
    $publicationObj = new Publication($f_publication_id);
    if ($f_issue_number > 0 && $f_article_language > 0) {
        $issueObj = new Issue($f_publication_id, $f_article_language, $f_issue_number);
        if ($f_section_number > 0) {
            $sectionObj = new Section($f_publication_id, $f_issue_number, $f_article_language, $f_section_number);
        }
    }
}
// Only show the languages for sections which have been translated.
$sections = Section::GetSections($f_publication_id, $f_issue_number, null, null, null, null, true);
$languageIds = DbObjectArray::GetColumn($sections, 'IdLanguage');
$allLanguages = array();
foreach ($languageIds as $languageId) {
    if (!isset($allLanguages[$languageId])) {
        $allLanguages[$languageId] = new Language($languageId);
    }
}
$allArticleTypes = ArticleType::GetArticleTypes();
$topArray = array('Pub' => $publicationObj, 'Issue' => $issueObj, 'Section' => $sectionObj);
camp_html_content_top(getGS('Add new article'), $topArray, true, false, array(getGS("Articles") => "/{$ADMIN}/articles/?f_publication_id={$f_publication_id}&f_issue_number={$f_issue_number}&f_section_number={$f_section_number}&f_language_id={$f_language_id}"));
?>
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1" class="action_buttons" style="padding-top: 5px;">
<TR>
	<TD><A HREF="<?php 
echo "/{$ADMIN}/articles/?f_publication_id={$f_publication_id}&f_issue_number={$f_issue_number}&f_section_number={$f_section_number}&f_language_id={$f_language_id}";
?>