Inheritance: extends DatabaseObject
 /**
  * Update
  *
  * @param GenericEvent $event
  * @return void
  */
 public function update(GenericEvent $event)
 {
     $comment = $this->commentService->find($event['id']);
     $article = new \Article($comment->getLanguage()->getId(), $comment->getThread()->getNumber());
     $authors = \ArticleAuthor::GetAuthorsByArticle($comment->getThread()->getNumber(), $comment->getLanguage()->getId());
     $this->emailService->sendCommentNotification($comment, $article, $authors, $this->userService->getCurrentUser());
 }
Esempio n. 2
0
    /**
     * @return boolean
     */
    public function delete()
    {
        if (!$this->exists()) {
            return false;
        }

        // Unlink articles
        ArticleAuthor::OnAuthorDelete($this->getId());
        // Unlink aliases
        AuthorAlias::OnAuthorDelete($this->getId());
        // Unlink authors
        AuthorAssignedType::OnAuthorDelete($this->getId());
        // Unlink biographies
        AuthorBiography::OnAuthorDelete($this->getId());

        // Save author data for logging purposes
        $tmpData = $this->m_data;
        // Delete row from Authors table.
        $result = parent::delete();
        if ($result) {
            if (function_exists("camp_load_translation_strings")) {
                camp_load_translation_strings("api");
            }
            $logText = getGS('Author #$1 "$2" deleted.',
                $tmpData['id'], $tmpData['first_name'] . ' ' . $tmpData['last_name']);
            Log::Message($logText, null, 174);
        }

        return $result;
    }
 /**
  * Update
  *
  * @param GenericEvent $event
  *
  * @return void
  */
 public function update(GenericEvent $event)
 {
     $comment = $this->commentService->find($event['id']);
     $article = $this->em->getRepository('Newscoop\\Entity\\Article')->getArticle($comment->getThread(), $comment->getLanguage()->getId())->getSingleResult();
     try {
         $user = $this->userService->getCurrentUser();
     } catch (AuthenticationException $e) {
         $user = null;
     }
     $authors = \ArticleAuthor::GetAuthorsByArticle($comment->getThread(), $comment->getLanguage()->getId());
     $this->emailService->sendCommentNotification($comment, $article, $authors, $user);
 }
Esempio n. 4
0
 /**
  * Creates the list of objects. Sets the parameter $p_hasNextElements to
  * true if this list is limited and elements still exist in the original
  * list (from which this was truncated) after the last element of this
  * list.
  *
  * @param int $p_start
  * @param int $p_limit
  * @param array $p_parameters
  * @param int &$p_count
  * @return array
  */
 protected function CreateList($p_start = 0, $p_limit = 0, array $p_parameters, &$p_count)
 {
     $articleAuthorsList = ArticleAuthor::GetList($this->m_constraints, $this->m_order, $p_start, $p_limit, $p_count);
     $metaAuthorsList = array();
     foreach ($articleAuthorsList as $author) {
         $authorTypeId = NULL;
         if (!is_null($author->getAuthorType()) && $author->getAuthorType()->exists()) {
             $authorTypeId = $author->getAuthorType()->getId();
         }
         $metaAuthorsList[] = new MetaAuthor($author->getId(), $authorTypeId);
     }
     return $metaAuthorsList;
 }
Esempio n. 5
0
 /**
  * @return boolean
  */
 public function delete()
 {
     if (!$this->exists()) {
         return false;
     }
     // Unlink articles
     ArticleAuthor::OnAuthorTypeDelete($this->getId());
     // Unlink authors
     AuthorAssignedType::OnAuthorTypeDelete($this->getId());
     // Delete this author type
     $authorType = $this->getName();
     $result = parent::delete();
     return $result;
 }
Esempio n. 6
0
 /**
  * @return boolean
  */
 public function delete()
 {
     if (!$this->exists()) {
         return false;
     }
     // Unlink articles
     ArticleAuthor::OnAuthorDelete($this->getId());
     // Unlink aliases
     AuthorAlias::OnAuthorDelete($this->getId());
     // Unlink authors
     AuthorAssignedType::OnAuthorDelete($this->getId());
     // Unlink biographies
     AuthorBiography::OnAuthorDelete($this->getId());
     // Save author data for logging purposes
     $tmpData = $this->m_data;
     // Delete row from Authors table.
     $result = parent::delete();
     return $result;
 }
 /**
  * Creates the list of objects. Sets the parameter $p_hasNextElements to
  * true if this list is limited and elements still exist in the original
  * list (from which this was truncated) after the last element of this
  * list.
  *
  * @param int $p_start
  * @param int $p_limit
  * @param array $p_parameters
  * @param int &$p_count
  * @return array
  */
 protected function CreateList($p_start = 0, $p_limit = 0, array $p_parameters, &$p_count)
 {
     $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache');
     $cacheKey = $cacheService->getCacheKey(array('metaAuthorsList', implode('-', $this->m_constraints), implode('-', $this->m_order), $p_start, $p_limit, $p_count), 'authors');
     if ($cacheService->contains($cacheKey)) {
         $metaAuthorsList = $cacheService->fetch($cacheKey);
     } else {
         $articleAuthorsList = ArticleAuthor::GetList($this->m_constraints, $this->m_order, $p_start, $p_limit, $p_count);
         $metaAuthorsList = array();
         foreach ($articleAuthorsList as $author) {
             $authorTypeId = NULL;
             if (!is_null($author->getAuthorType()) && $author->getAuthorType()->exists()) {
                 $authorTypeId = $author->getAuthorType()->getId();
             }
             $metaAuthorsList[] = new MetaAuthor($author->getId(), $authorTypeId);
         }
         $cacheService->save($cacheKey, $metaAuthorsList);
     }
     return $metaAuthorsList;
 }
 /**
  * Adds an object to the instance pool.
  *
  * Propel keeps cached copies of objects in an instance pool when they are retrieved
  * from the database.  In some cases -- especially when you override doSelect*()
  * methods in your stub classes -- you may need to explicitly add objects
  * to the cache in order to ensure that the same objects are always returned by doSelect*()
  * and retrieveByPK*() calls.
  *
  * @param      ArticleAuthor $value A ArticleAuthor object.
  * @param      string $key (optional) key to use for instance map (for performance boost if key was already calculated externally).
  */
 public static function addInstanceToPool(ArticleAuthor $obj, $key = null)
 {
     if (Propel::isInstancePoolingEnabled()) {
         if ($key === null) {
             $key = serialize(array((string) $obj->getArticleId(), (string) $obj->getAuthorId()));
         }
         // if key === null
         self::$instances[$key] = $obj;
     }
 }
Esempio n. 9
0
 /**
  * Returns an article authors list based on the given parameters.
  *
  * @param array $p_parameters
  *    An array of ComparisonOperation objects
  * @param string $p_order
  *    An array of columns and directions to order by
  * @param integer $p_start
  *    The record number to start the list
  * @param integer $p_limit
  *    The offset. How many records from $p_start will be retrieved.
  * @param integer $p_count
  *    The total count of the elements; this count is computed without
  *    applying the start ($p_start) and limit parameters ($p_limit)
  *
  * @return array $articleAuthorsList
  *    An array of Author objects
  */
 public static function GetList(array $p_parameters, $p_order = null, $p_start = 0, $p_limit = 0, &$p_count, $p_skipCache = false)
 {
     global $g_ado_db;
     if (!$p_skipCache && CampCache::IsEnabled()) {
         $paramsArray['parameters'] = serialize($p_parameters);
         $paramsArray['order'] = is_null($p_order) ? 'order' : $p_order;
         $paramsArray['start'] = $p_start;
         $paramsArray['limit'] = $p_limit;
         $cacheListObj = new CampCacheList($paramsArray, __METHOD__);
         $articleAuthorsList = $cacheListObj->fetchFromCache();
         if ($articleAuthorsList !== false && is_array($articleAuthorsList)) {
             return $articleAuthorsList;
         }
     }
     $hasArticleNr = false;
     $selectClauseObj = new SQLSelectClause();
     $countClauseObj = new SQLSelectClause();
     // sets the where conditions
     foreach ($p_parameters as $param) {
         if ($param->getLeftOperand() == 'type') {
             $whereCondition = 'fk_type_id ' . $param->getOperator()->getSymbol() . ' (SELECT id FROM ' . AuthorType::TABLE . ' WHERE type="' . str_replace("'", "", $param->getRightOperand()) . '")';
             $selectClauseObj->addWhere($whereCondition);
             $countClauseObj->addWhere($whereCondition);
         }
         if ($param->getLeftOperand() == 'id') {
             $whereCondition = 'fk_author_id ' . $param->getOperator()->getSymbol() . ' ' . $param->getRightOperand();
             $selectClauseObj->addWhere($whereCondition);
             $countClauseObj->addWhere($whereCondition);
         }
         $comparisonOperation = self::ProcessListParameters($param);
         if (sizeof($comparisonOperation) < 1) {
             break;
         }
         switch (key($comparisonOperation)) {
             case 'fk_article_number':
                 $whereCondition = 'fk_article_number = ' . $comparisonOperation['fk_article_number'];
                 $hasArticleNr = true;
                 break;
             case 'fk_language_id':
                 $whereCondition = '(fk_language_id IS NULL OR ' . 'fk_language_id = ' . $comparisonOperation['fk_language_id'] . ')';
                 break;
         }
         $selectClauseObj->addWhere($whereCondition);
         $countClauseObj->addWhere($whereCondition);
     }
     // validates whether article number was given
     if ($hasArticleNr === false) {
         CampTemplate::singleton()->trigger_error("missed parameter Article Number in statement list_article_authors");
     }
     // sets the base table ArticleAuthors and the column to be fetched
     $tmpArticleAuthor = new ArticleAuthor();
     $selectClauseObj->setTable($tmpArticleAuthor->getDbTableName());
     $selectClauseObj->addJoin('JOIN ' . Author::TABLE . ' ON fk_author_id = id');
     $selectClauseObj->addColumn('fk_author_id');
     $selectClauseObj->addColumn('fk_type_id');
     $countClauseObj->setTable($tmpArticleAuthor->getDbTableName());
     $countClauseObj->addColumn('COUNT(*)');
     unset($tmpArticleAuthor);
     if (!is_array($p_order)) {
         $p_order = array();
     }
     $order = self::ProcessListOrder($p_order);
     // sets the order condition if any
     foreach ($order as $orderDesc) {
         $orderField = $orderDesc['field'];
         $orderDirection = $orderDesc['dir'];
         $selectClauseObj->addOrderBy($orderField . ' ' . $orderDirection);
     }
     // sets the limit
     $selectClauseObj->setLimit($p_start, $p_limit);
     // builds the query and executes it
     $selectQuery = $selectClauseObj->buildQuery();
     $authors = $g_ado_db->GetAll($selectQuery);
     if (is_array($authors)) {
         $countQuery = $countClauseObj->buildQuery();
         $p_count = $g_ado_db->GetOne($countQuery);
         // builds the array of attachment objects
         $authorsList = array();
         foreach ($authors as $author) {
             $authorObj = new Author($author['fk_author_id'], $author['fk_type_id']);
             if ($authorObj->exists()) {
                 $authorsList[] = $authorObj;
             }
         }
     } else {
         $authorsList = array();
         $p_count = 0;
     }
     if (!$p_skipCache && CampCache::IsEnabled()) {
         $cacheListObj->storeInCache($authorsList);
     }
     return $authorsList;
 }
Esempio n. 10
0
                continue;
            }
            $authorData = Author::ReadName($author);
            $authorObj->create($authorData);
        } elseif ($blogService->isBlogger($g_user)) {
            // test if using authors from blog
            if (!$blogService->isBlogAuthor($authorObj, $blogInfo)) {
                continue;
            }
        }
        // Sets the author type selected
        $author_type = $f_article_author_type[$i];
        $authorObj->setType($author_type);
        // Links the author to the article
        if ($authorObj->getId() != 0) {
            $articleAuthorObj = new ArticleAuthor($articleObj->getArticleNumber(), $articleObj->getLanguageId(), $authorObj->getId(), $author_type, $i + 1);
        }
        if (isset($articleAuthorObj) && !$articleAuthorObj->exists()) {
            $articleAuthorObj->create();
            $dispatcher->dispatch("user.set_points", new \Newscoop\EventDispatcher\Events\GenericEvent($this, array('authorId' => $articleAuthorObj->getAuthorId())));
        }
        $i++;
    }
}
// Update the article.
$articleObj->setTitle($f_article_title);
$articleObj->setIsIndexed(false);
if (!empty($f_comment_status)) {
    if ($f_comment_status == "enabled" || $f_comment_status == "locked") {
        $commentsEnabled = true;
    } else {
Esempio n. 11
0
 /**
  * Test article authors
  */
 private function checkAuthors($count, \Article $article, Feed $feed)
 {
     $authors = \ArticleAuthor::GetAuthorsByArticle($article->getArticleNumber(), $article->getLanguageId());
     $this->assertEquals(1, count($authors), 'Authors count fails.');
     $this->assertEquals($feed->getTitle(), $authors[0]->getName());
 }
Esempio n. 12
0
// Update the article author
if (!empty($f_article_author)) {
    ArticleAuthor::OnArticleLanguageDelete($articleObj->getArticleNumber(), $articleObj->getLanguageId());
    $i = 0;
    foreach ($f_article_author as $author) {
        $authorObj = new Author($author);
        if (!$authorObj->exists()  && strlen(trim($author)) > 0) {
            $authorData = Author::ReadName($author);
            $authorObj->create($authorData);
        }
        // Sets the author type selected
        $author_type = $f_article_author_type[$i];
        $authorObj->setType($author_type);
        // Links the author to the article
        $articleAuthorObj = new ArticleAuthor($articleObj->getArticleNumber(),
                                              $articleObj->getLanguageId(),
                                              $authorObj->getId(), $author_type);
        if (!$articleAuthorObj->exists()) {
            $articleAuthorObj->create();
        }
        $i++;
    }
}

// Update the article.
$articleObj->setOnFrontPage(!empty($f_on_front_page));
$articleObj->setOnSectionPage(!empty($f_on_section_page));
$articleObj->setIsPublic(!empty($f_is_public));
$articleObj->setKeywords($f_keywords);
$articleObj->setTitle($f_article_title);
$articleObj->setIsIndexed(false);
Esempio n. 13
0
      <div class="textHolder omega">
        <textarea name="txt_biography" id="txt_biography" rows="30" class="tinymce input_text_area"><?php echo $biography; ?></textarea>
      </div>
    </fieldset>
    <div class="clear"></div>
  </div>

  <?php
  if (is_object($author)) {
  ?>
  <div id="contentContainer">
    <div class="space-box"></div>
    <fieldset class="frame">
      <ul>
    <?php
    $authoringList = ArticleAuthor::GetArticlesByAuthor($author->getId());
    $authoringCount = sizeof($authoringList);
    if ($authoringCount > 0) {
    ?>
        <li>
          <label><?php putGS('Total articles'); ?>:</label> <span><?php echo $authoringCount; ?></span></li>
    <?php
        foreach ($authoringList as $authoringItem) {
            $articleUrl = $Campsite['WEBSITE_URL'] . '/' . $ADMIN . '/articles/edit.php';
            $articleUrl .= '?f_publication_id=' . $authoringItem['article']->getPublicationId()
                . '&f_issue_number=' . $authoringItem['article']->getIssueNumber()
                . '&f_section_number=' . $authoringItem['article']->getSectionNumber()
                . '&f_article_number=' . $authoringItem['article']->getArticleNumber()
                . '&f_language_id=' . $authoringItem['article']->getLanguageId();
    ?>
        <li>
Esempio n. 14
0
 /**
  * Returns map locations list based on the given parameters.
  *
  * @param array $p_parameters
  *    An array of ComparionOperation objects
  * @param array $p_order
  *    An array of columns and directions to order by
  * @param integer $p_start
  *    The record number to start the list
  * @param integer $p_limit
  *    The offset, how many records from $p_start will be retrieved
  * @param integer $p_count
  *    Total count of POIs without p_start/p_limit limitations
  * @param bool $p_skipCache
  *    Whether to skip caching
  * @param array $p_rawData
  *    The variable for returning read points as raw array, used for the JS processing
  *
  * @return array
  */
 public static function GetListExt(array $p_parameters, array $p_order = array(), $p_start = 0, $p_limit = 0, &$p_count, $p_skipCache = false, &$p_rawData = null)
 {
     $p_count = 0;
     if (!is_numeric($p_limit)) {
         $p_limit = 0;
     }
     if (!is_numeric($p_start)) {
         $p_start = 0;
     }
     $ps_saveArray = false;
     if (!is_null($p_rawData)) {
         $ps_saveArray = true;
         $p_rawData = array();
     }
     $list_spec = array('params' => $p_parameters, 'order' => $p_order, 'start' => $p_start, 'limit' => $p_limit, 'skip_cache' => $p_skipCache, 'raw_data' => $p_rawData);
     $list_spec_str = serialize($list_spec);
     if (!$p_skipCache && !empty(self::$s_found_maplocations_list_ext) && isset(self::$s_found_maplocations_list_ext[$list_spec_str])) {
         $list_res_data = self::$s_found_maplocations_list_ext[$list_spec_str];
         $p_count = $list_res_data['count'];
         $list_obj = $list_res_data['list_obj'];
         if ($ps_saveArray) {
             $p_rawData = $list_res_data['list_raw'];
         }
         return $list_obj;
     }
     $ps_mapId = 0;
     $ps_languageId = 0;
     $ps_preview = false;
     // read all the info, mostly cached at the upstream
     $ps_publicationId = 0;
     $mc_mapCons = false;
     $mc_article_types_yes = array();
     $mc_article_types_no = array();
     $mc_authors_yes = array();
     $mc_authors_no = array();
     $mc_users_yes = array();
     $mc_users_no = array();
     $mc_articles_yes = array();
     $mc_articles_no = array();
     $mc_issues = array();
     $mc_sections = array();
     $mc_section_names = array();
     $mc_topics = array();
     $mc_topic_names = array();
     $mc_topics_matchall = false;
     $mc_multimedia = array();
     $mc_areas = array();
     $mc_areas_matchall = false;
     $mc_areas_exact = true;
     $mc_dates = array();
     $mc_icons = array();
     // process params
     foreach ($p_parameters as $param) {
         switch ($param->getLeftOperand()) {
             case 'constrained':
                 $mc_mapCons = true;
             case 'map':
                 if (is_numeric($param->getRightOperand())) {
                     $ps_mapId = $param->getRightOperand();
                 }
                 break;
             case 'language':
                 if (is_numeric($param->getRightOperand())) {
                     $ps_languageId = 0 + $param->getRightOperand();
                 }
                 break;
             case 'active_only':
             case 'preview':
                 $ps_preview = $param->getRightOperand();
                 break;
             case 'publication':
                 $ps_publicationId = (int) $param->getRightOperand();
                 break;
             case 'article_type':
                 $one_arttp_value = $param->getRightOperand();
                 $one_arttp_type = $param->getOperator()->getName();
                 if ('is' == $one_arttp_type) {
                     $mc_article_types_yes[] = $one_arttp_value;
                     $mc_mapCons = true;
                 }
                 if ('not' == $one_arttp_type) {
                     $mc_article_types_no[] = $one_arttp_value;
                     $mc_mapCons = true;
                 }
                 break;
             case 'author':
                 $one_user_value = $param->getRightOperand();
                 $one_user_type = $param->getOperator()->getName();
                 if ('is' == $one_user_type) {
                     $mc_authors_yes[] = $one_user_value;
                     $mc_mapCons = true;
                 }
                 if ('not' == $one_user_type) {
                     $mc_authors_no[] = $one_user_value;
                     $mc_mapCons = true;
                 }
                 break;
             case 'article':
                 $one_article_value = $param->getRightOperand();
                 $one_article_type = $param->getOperator()->getName();
                 if ('is' == $one_article_type) {
                     $mc_articles_yes[] = $one_article_value;
                     $mc_mapCons = true;
                 }
                 if ('not' == $one_article_type) {
                     $mc_articles_no[] = $one_article_value;
                     $mc_mapCons = true;
                 }
                 break;
             case 'issue':
                 $mc_issues[] = $param->getRightOperand();
                 $mc_mapCons = true;
                 break;
             case 'section':
                 $mc_sections[] = $param->getRightOperand();
                 $mc_mapCons = true;
                 break;
             case 'section_name':
                 $mc_section_names[] = $param->getRightOperand();
                 $mc_mapCons = true;
                 break;
             case 'topic':
                 $mc_topics[] = $param->getRightOperand();
                 $mc_mapCons = true;
                 break;
             case 'topic_name':
                 $mc_topic_names[] = $param->getRightOperand();
                 $mc_mapCons = true;
                 break;
             case 'matchalltopics':
                 $mc_topics_matchall = $param->getRightOperand();
                 break;
             case 'matchanytopic':
                 $mc_topics_matchall = !$param->getRightOperand();
                 break;
             case 'multimedia':
                 $mc_multimedia[] = $param->getRightOperand();
                 $mc_mapCons = true;
                 break;
             case 'area':
                 $mc_areas[] = json_decode($param->getRightOperand());
                 $mc_mapCons = true;
                 break;
             case 'matchallareas':
                 $mc_areas_matchall = $param->getRightOperand();
                 break;
             case 'matchanyarea':
                 $mc_areas_matchall = !$param->getRightOperand();
                 break;
             case 'exactarea':
                 $mc_areas_exact = $param->getRightOperand();
                 break;
             case 'date':
                 $mc_dates[$param->getOperator()->getName()] = $param->getRightOperand();
                 $mc_mapCons = true;
                 break;
             case 'icon':
                 $mc_icons[] = $param->getRightOperand();
                 $mc_mapCons = true;
                 break;
             default:
                 break;
         }
     }
     // constrained maps ned to have set publication
     if ($mc_mapCons && !$ps_publicationId) {
         return array();
     }
     if (!$ps_languageId || 0 >= $ps_languageId) {
         $ps_languageId = $Context->language->number;
     }
     if (!$ps_languageId || 0 >= $ps_languageId) {
         return array();
     }
     if (!CampCache::IsEnabled()) {
         $p_skipCache = true;
     }
     $ps_orders = array();
     if (!$p_order || !is_array($p_order) || 0 == count($p_order)) {
         if ($mc_mapCons) {
             $ps_orders = array(array('a.Number' => 'DESC'), array('m.id' => 'DESC'));
         }
     } else {
         $allowed_order_dirs = array('DESC' => true, 'ASC' => true);
         foreach ($p_order as $one_order_column => $one_order_dir) {
             $one_dir = strtoupper($one_order_dir);
             if (!array_key_exists($one_dir, $allowed_order_dirs)) {
                 continue;
             }
             switch (strtolower($one_order_column)) {
                 case 'article':
                     if (!$mc_mapCons) {
                         break;
                     }
                     $ps_orders[] = array('a.Number' => $one_dir);
                     break;
                 case 'map':
                     $ps_orders[] = array('m.id' => $one_dir);
                     break;
                 case 'name':
                     $ps_orders[] = array('c.poi_name' => $one_dir);
                     break;
             }
         }
     }
     if ((0 == $ps_mapId || !$ps_mapId) && !$mc_mapCons) {
         return array();
     }
     $mc_limit = 0 + $p_limit;
     if (0 > $mc_limit) {
         $mc_limit = 0;
     }
     $mc_start = 0 + $p_start;
     if (0 > $mc_start) {
         $mc_start = 0;
     }
     $dataArray = array();
     $objsArray = array();
     $cachedData = null;
     $paramsArray_arr = array();
     $paramsArray_obj = array();
     $cacheList_arr = null;
     $cacheList_obj = null;
     if (!$p_skipCache) {
         $paramsArray_arr['as_array'] = true;
         $paramsArray_arr['map_id'] = $ps_mapId;
         $paramsArray_arr['publication_id'] = $ps_publicationId;
         $paramsArray_arr['language_id'] = $ps_languageId;
         $paramsArray_arr['preview'] = $ps_preview;
         $paramsArray_arr['map_cons'] = $mc_mapCons;
         $paramsArray_arr['article_types_yes'] = $mc_article_types_yes;
         $paramsArray_arr['article_types_no'] = $mc_article_types_no;
         $paramsArray_arr['authors_yes'] = $mc_authors_yes;
         $paramsArray_arr['authors_no'] = $mc_authors_no;
         $paramsArray_arr['articles_yes'] = $mc_articles_yes;
         $paramsArray_arr['articles_no'] = $mc_articles_no;
         $paramsArray_arr['issues'] = $mc_issues;
         $paramsArray_arr['sections'] = $mc_sections;
         $paramsArray_arr['section_names'] = $mc_section_names;
         $paramsArray_arr['topics'] = $mc_topics;
         $paramsArray_arr['topic_names'] = $mc_topic_names;
         $paramsArray_arr['topics_matchall'] = $mc_topics_matchall;
         $paramsArray_arr['multimedia'] = $mc_multimedia;
         $paramsArray_arr['areas'] = $mc_areas;
         $paramsArray_arr['areas_matchall'] = $mc_areas_matchall;
         $paramsArray_arr['areas_exact'] = $mc_areas_exact;
         $paramsArray_arr['dates'] = $mc_dates;
         $paramsArray_arr['icons'] = $mc_icons;
         $paramsArray_arr['orders'] = $ps_orders;
         $paramsArray_arr['limit'] = $mc_limit;
         $paramsArray_arr['start'] = $mc_start;
         $paramsArray_obj = $paramsArray_arr;
         $paramsArray_obj['as_array'] = false;
         $cacheList_arr = new CampCacheList($paramsArray_arr, __METHOD__);
         $cacheList_obj = new CampCacheList($paramsArray_obj, __METHOD__);
         if ($ps_saveArray) {
             $cachedData = $cacheList_arr->fetchFromCache();
             if ($cachedData !== false && is_array($cachedData)) {
                 $p_count = $cachedData['count'];
                 $p_rawData = $cachedData['data'];
             }
         }
         $cachedData = $cacheList_obj->fetchFromCache();
         if ($cachedData !== false && is_array($cachedData)) {
             $p_count = $cachedData['count'];
             return $cachedData['data'];
         }
     }
     global $g_ado_db;
     if (0 < count($mc_authors_yes)) {
         $author_ids_req_names = ArticleAuthor::BuildAuthorIdsQuery($mc_authors_yes);
         $author_ids_req_alias = AuthorAlias::BuildAuthorIdsQuery($mc_authors_yes);
         if ($author_ids_req_names) {
             $rows = $g_ado_db->GetAll($author_ids_req_names);
             if (is_array($rows)) {
                 foreach ($rows as $row) {
                     $mc_users_yes[] = trim(strtolower($row['id']));
                 }
             }
         }
         if ($author_ids_req_alias) {
             $rows = $g_ado_db->GetAll($author_ids_req_alias);
             if (is_array($rows)) {
                 foreach ($rows as $row) {
                     $mc_users_yes[] = trim(strtolower($row['id']));
                 }
             }
         }
         if (0 == count($mc_users_yes)) {
             return array();
         }
     }
     if (0 < count($mc_authors_no)) {
         $author_ids_req_names = ArticleAuthor::BuildAuthorIdsQuery($mc_authors_no);
         $author_ids_req_alias = AuthorAlias::BuildAuthorIdsQuery($mc_authors_no);
         if ($author_ids_req_names) {
             $rows = $g_ado_db->GetAll($author_ids_req_names);
             if (is_array($rows)) {
                 foreach ($rows as $row) {
                     $mc_users_no[] = trim(strtolower($row['id']));
                 }
             }
         }
         if ($author_ids_req_alias) {
             $rows = $g_ado_db->GetAll($author_ids_req_alias);
             if (is_array($rows)) {
                 foreach ($rows as $row) {
                     $mc_users_no[] = trim(strtolower($row['id']));
                 }
             }
         }
     }
     if (0 < count($mc_section_names)) {
         $section_ids_req_names = Section::BuildSectionIdsQuery($mc_section_names, $ps_publicationId);
         if ($section_ids_req_names) {
             $rows = $g_ado_db->GetAll($section_ids_req_names);
             if (is_array($rows)) {
                 foreach ($rows as $row) {
                     $mc_sections[] = trim(strtolower($row['id']));
                 }
             }
         }
         if (0 == count($mc_sections)) {
             return array();
         }
     }
     if (0 < count($mc_topic_names)) {
         $topic_ids_req_names = TopicName::BuildTopicIdsQuery($mc_topic_names);
         if ($topic_ids_req_names) {
             $rows = $g_ado_db->GetAll($topic_ids_req_names);
             if (is_array($rows)) {
                 foreach ($rows as $row) {
                     $mc_topics[] = trim(strtolower($row['id']));
                 }
             }
         }
         if (0 == count($mc_topics)) {
             return array();
         }
     }
     $ps_orders = array();
     if (!$p_order || !is_array($p_order) || 0 == count($p_order)) {
         if ($mc_mapCons) {
             $ps_orders = array(array('a.PublishDate' => 'DESC'), array('a.Number' => 'DESC'), array('m.id' => 'DESC'));
         }
     } else {
         $allowed_order_dirs = array('DESC' => true, 'ASC' => true);
         foreach ($p_order as $one_order_column => $one_order_dir) {
             $one_dir = strtoupper($one_order_dir);
             if (!array_key_exists($one_dir, $allowed_order_dirs)) {
                 continue;
             }
             switch (strtolower($one_order_column)) {
                 case 'publish':
                 case 'published':
                     if (!$mc_mapCons) {
                         break;
                     }
                     $ps_orders[] = array('a.PublishDate' => $one_dir);
                     break;
                 case 'article':
                     if (!$mc_mapCons) {
                         break;
                     }
                     $ps_orders[] = array('a.Number' => $one_dir);
                     break;
                 case 'map':
                     $ps_orders[] = array('m.id' => $one_dir);
                     break;
                 case 'name':
                     $ps_orders[] = array('c.poi_name' => $one_dir);
                     break;
             }
         }
     }
     if ((0 == $ps_mapId || !$ps_mapId) && !$mc_mapCons) {
         return array();
     }
     $queryStr = '';
     $queryStr_start = '';
     $queryStr_start .= 'SELECT DISTINCT ml.id AS ml_id, mll.id as mll_id, ml.fk_location_id AS loc_id, mll.fk_content_id AS con_id, ';
     $queryStr_start .= 'ml.poi_style AS poi_style, ml.rank AS rank, mll.poi_display AS poi_display, ';
     // these few lines below are just for data for list-of-objects array
     $queryStr_start .= 'l.poi_radius AS l_radius, l.IdUser AS l_user, l.time_updated AS l_updated, ';
     if ($mc_mapCons) {
         $queryStr_start .= 'm.id AS m_id, m.IdUser AS m_user, m.fk_article_number AS art_number, GROUP_CONCAT(DISTINCT m.fk_article_number ORDER BY m.fk_article_number DESC) AS art_numbers, ';
     }
     $multimedia_def = "CONCAT(mu.id, \"-\", mlmu.id)";
     if ($mc_mapCons) {
         $multimedia_def = 'mu.id';
     }
     $queryStr_start .= "(SELECT {$multimedia_def} FROM MapLocationMultimedia AS mlmu INNER JOIN Multimedia AS mu ON mlmu.fk_multimedia_id = mu.id WHERE mlmu.fk_maplocation_id = ml.id AND mu.media_type = 'image' ORDER BY mu.id LIMIT 1) AS image_mm, ";
     $queryStr_start .= "(SELECT {$multimedia_def} FROM MapLocationMultimedia AS mlmu INNER JOIN Multimedia AS mu ON mlmu.fk_multimedia_id = mu.id WHERE mlmu.fk_maplocation_id = ml.id AND mu.media_type = 'video' ORDER BY mu.id LIMIT 1) AS video_mm, ";
     $queryStr_start .= 'c.IdUser AS c_user, c.time_updated AS c_updated, ';
     $queryStr_start .= 'AsText(l.poi_location) AS loc, l.poi_type AS poi_type, l.poi_type_style AS poi_type_style, ';
     $queryStr_start .= 'c.poi_name AS poi_name, c.poi_link AS poi_link, c.poi_perex AS poi_perex, ';
     $queryStr_start .= 'c.poi_content_type AS poi_content_type, c.poi_content AS poi_content, c.poi_text AS poi_text ';
     $queryStr .= 'FROM MapLocations AS ml INNER JOIN MapLocationLanguages AS mll ON ml.id = mll.fk_maplocation_id ';
     $queryStr .= 'INNER JOIN Locations AS l ON l.id = ml.fk_location_id ';
     $queryStr .= 'INNER JOIN LocationContents AS c ON c.id = mll.fk_content_id ';
     $query_mcons = '';
     $article_mcons = false;
     $mc_filter_mm = false;
     $mc_filter_image = false;
     $mc_filter_video = false;
     if ($mc_mapCons) {
         $queryStr .= 'INNER JOIN Maps AS m ON m.id = ml.fk_map_id ';
         $queryStr .= 'INNER JOIN Articles AS a ON m.fk_article_number = a.Number ';
         if (0 < count($mc_users_yes) || 0 < count($mc_users_no)) {
             $queryStr .= 'INNER JOIN ArticleAuthors AS aa ON aa.fk_article_number = a.Number ';
         }
         $query_mcons = "a.IdPublication = {$ps_publicationId} AND ";
         $article_mcons = false;
         foreach ($mc_multimedia as $one_multimedia) {
             if ('any' == $one_multimedia) {
                 $mc_filter_mm = true;
             }
             if ('image' == $one_multimedia) {
                 $mc_filter_image = true;
             }
             if ('video' == $one_multimedia) {
                 $mc_filter_video = true;
             }
         }
         if (0 < count($mc_users_yes)) {
             $query_mcons .= 'aa.fk_author_id IN (' . implode(', ', $mc_users_yes) . ') AND ';
             $article_mcons = true;
         }
         if (0 < count($mc_users_no)) {
             $query_mcons .= 'aa.fk_author_id NOT IN (' . implode(', ', $mc_users_no) . ') AND ';
             $article_mcons = true;
         }
         if (0 < count($mc_article_types_yes)) {
             $mc_correct = true;
             foreach ($mc_article_types_yes as $val) {
                 if (false !== stripos($val, '\'')) {
                     $mc_correct = false;
                     break;
                 }
                 if (false !== stripos($val, '"')) {
                     $mc_correct = false;
                     break;
                 }
             }
             if ($mc_correct) {
                 $query_mcons .= 'a.Type IN (\'' . implode('\', \'', $mc_article_types_yes) . '\') AND ';
                 $article_mcons = true;
             }
         }
         if (0 < count($mc_article_types_no)) {
             $mc_correct = true;
             foreach ($mc_article_types_no as $val) {
                 if (false !== stripos($val, '\'')) {
                     $mc_correct = false;
                     break;
                 }
                 if (false !== stripos($val, '"')) {
                     $mc_correct = false;
                     break;
                 }
             }
             if ($mc_correct) {
                 $query_mcons .= 'a.Type NOT IN (\'' . implode('\', \'', $mc_article_types_no) . '\') AND ';
                 $article_mcons = true;
             }
         }
         if (0 < count($mc_articles_yes)) {
             $mc_correct = true;
             foreach ($mc_articles_yes as $val) {
                 if (!is_numeric($val)) {
                     $mc_correct = false;
                 }
             }
             if ($mc_correct) {
                 $query_mcons .= 'a.Number IN (' . implode(', ', $mc_articles_yes) . ') AND ';
                 $article_mcons = true;
             }
         }
         if (0 < count($mc_articles_no)) {
             $mc_correct = true;
             foreach ($mc_articles_no as $val) {
                 if (!is_numeric($val)) {
                     $mc_correct = false;
                 }
             }
             if ($mc_correct) {
                 $query_mcons .= 'a.Number NOT IN (' . implode(', ', $mc_articles_no) . ') AND ';
                 $article_mcons = true;
             }
         }
         if (0 < count($mc_issues)) {
             $mc_correct = true;
             foreach ($mc_issues as $val) {
                 if (!is_numeric($val)) {
                     $mc_correct = false;
                 }
             }
             if ($mc_correct) {
                 $query_mcons .= 'a.NrIssue IN (' . implode(', ', $mc_issues) . ') AND ';
                 $article_mcons = true;
             }
         }
         if (0 < count($mc_sections)) {
             $mc_correct = true;
             foreach ($mc_sections as $val) {
                 if (!is_numeric($val)) {
                     $mc_correct = false;
                 }
             }
             if ($mc_correct) {
                 $query_mcons .= 'a.NrSection IN (' . implode(', ', $mc_sections) . ') AND ';
                 $article_mcons = true;
             }
         }
         foreach ($mc_dates as $one_date_type => $one_date_value_arr) {
             if (0 == count($one_date_value_arr)) {
                 continue;
             }
             $one_date_value = $one_date_value_arr[0];
             $one_date_value = trim($one_date_value);
             $one_date_value = trim($one_date_value, "\"'");
             $one_date_value = str_replace("'", "\"", $one_date_value);
             $one_date_usage = 'CAST(a.PublishDate AS DATE) ';
             $one_date_known = false;
             if ('smaller_equal' == $one_date_type) {
                 $one_date_usage .= '<= ';
                 $one_date_known = true;
             }
             if ('smaller' == $one_date_type) {
                 $one_date_usage .= '< ';
                 $one_date_known = true;
             }
             if ('greater_equal' == $one_date_type) {
                 $one_date_usage .= '>= ';
                 $one_date_known = true;
             }
             if ('greater' == $one_date_type) {
                 $one_date_usage .= '> ';
                 $one_date_known = true;
             }
             if ('is' == $one_date_type) {
                 $one_date_usage .= '= ';
                 $one_date_known = true;
             }
             if ('not' == $one_date_type) {
                 $one_date_usage .= '<> ';
                 $one_date_known = true;
             }
             if (!$one_date_known) {
                 continue;
             }
             $one_date_usage .= "'{$one_date_value}' AND ";
             $query_mcons .= $one_date_usage;
             $article_mcons = true;
         }
         $mc_icons_usage = array();
         foreach ($mc_icons as $one_icon_value) {
             $one_icon_value = str_replace("'", "\"", $one_icon_value);
             if (0 < strlen($one_icon_value)) {
                 $mc_icons_usage[] = $one_icon_value;
             }
         }
         if (0 < count($mc_icons_usage)) {
             $query_mcons .= "ml.poi_style IN ('" . implode("', '", $mc_icons_usage) . "') AND ";
             $article_mcons = true;
         }
         if (0 < count($mc_topics)) {
             $mc_topics_list = array();
             $mc_topics_conn = 'OR';
             if ($mc_topics_matchall) {
                 $mc_topics_conn = 'AND';
             }
             foreach ($mc_topics as $one_topic) {
                 if (!is_numeric($one_topic)) {
                     continue;
                 }
                 $mc_topics_list[] = 'EXISTS (SELECT at.TopicId FROM ArticleTopics AS at WHERE a.Number = at.NrArticle AND at.TopicId IN (' . Topic::BuildAllSubtopicsQuery($one_topic, false) . '))';
             }
             if (0 < count($mc_topics_list)) {
                 $query_mcons .= '(' . implode(" {$mc_topics_conn} ", $mc_topics_list) . ') AND ';
                 $article_mcons = true;
             }
         }
         $mc_areas_list = array();
         $mc_areas_conn = 'OR';
         if ($mc_areas_matchall) {
             $mc_areas_conn = 'AND';
         }
         foreach ($mc_areas as $one_area) {
             if (is_object($one_area)) {
                 $one_area = get_object_vars($one_area);
             }
             $mc_rectangle = $one_area['rectangle'];
             $mc_polygon = $one_area['polygon'];
             if ($mc_rectangle && 2 == count($mc_rectangle)) {
                 $area_cons_res = Geo_MapLocation::GetGeoSearchSQLCons($mc_rectangle, 'rectangle', 'l');
                 if (!$area_cons_res['error']) {
                     $mc_areas_list[] = $area_cons_res['cons'];
                     $article_mcons = true;
                 }
             }
             if ($mc_polygon && 3 <= count($mc_polygon)) {
                 $area_cons_res = Geo_MapLocation::GetGeoSearchSQLCons($mc_polygon, 'polygon', 'l');
                 $area_cons_res_finer = null;
                 if ($mc_areas_exact) {
                     $area_cons_res_finer = Geo_MapLocation::GetGeoSearchPointInPolygon($mc_polygon, 'l');
                 }
                 if (!$area_cons_res['error']) {
                     $one_area_cons = $area_cons_res['cons'];
                     if ($mc_areas_exact && !$area_cons_res_finer['error']) {
                         $one_area_cons = "({$one_area_cons} AND " . $area_cons_res_finer['cons'] . ')';
                     }
                     $mc_areas_list[] = $one_area_cons;
                     $article_mcons = true;
                 }
             }
         }
         if (0 < count($mc_areas_list)) {
             $query_mcons .= '(' . implode(" {$mc_areas_conn} ", $mc_areas_list) . ') AND ';
             $article_mcons = true;
         }
         $mmu_test_join = '%%mmu_test_join%%';
         $mmu_test_spec = '%%mmu_test_spec%%';
         $multimedia_test_common = "EXISTS (SELECT mlmu.id FROM MapLocationMultimedia AS mlmu {$mmu_test_join} WHERE mlmu.fk_maplocation_id = ml.id {$mmu_test_spec}) AND ";
         $multimedia_test_basic = $multimedia_test_common;
         $multimedia_test_basic = str_replace($mmu_test_join, '', $multimedia_test_basic);
         $multimedia_test_basic = str_replace($mmu_test_spec, '', $multimedia_test_basic);
         $multimedia_test_spec = $multimedia_test_common;
         $multimedia_test_spec = str_replace($mmu_test_join, 'INNER JOIN Multimedia AS mu ON mlmu.fk_multimedia_id = mu.id ', $multimedia_test_spec);
         $multimedia_test_image = $multimedia_test_spec;
         $multimedia_test_image = str_replace($mmu_test_spec, "AND mu.media_type = 'image'", $multimedia_test_image);
         $multimedia_test_video = $multimedia_test_spec;
         $multimedia_test_video = str_replace($mmu_test_spec, "AND mu.media_type = 'video'", $multimedia_test_video);
         if ($mc_filter_image) {
             $query_mcons .= $multimedia_test_image;
             $article_mcons = true;
         }
         if ($mc_filter_video) {
             $query_mcons .= $multimedia_test_video;
             $article_mcons = true;
         }
         if ($mc_filter_mm) {
             $query_mcons .= $multimedia_test_basic;
             $article_mcons = true;
         }
         $queryStr .= 'WHERE ';
         if ($article_mcons) {
             $queryStr .= $query_mcons;
         }
         $queryStr .= "a.Published = 'Y' AND a.IdLanguage = {$ps_languageId} ";
     } else {
         $queryStr .= "WHERE ml.fk_map_id = {$ps_mapId} ";
     }
     $queryStr_mid = "";
     $queryStr_mid .= "AND mll.fk_language_id = {$ps_languageId} ";
     if ($ps_preview) {
         $queryStr_mid .= "AND mll.poi_display = 1 ";
     }
     if ($mc_mapCons) {
         $queryStr_mid .= 'GROUP BY ml.fk_location_id, mll.fk_content_id, ml.poi_style, mll.poi_display, image_mm, video_mm ';
     }
     $queryStr .= $queryStr_mid;
     $queryStr = $queryStr_start . $queryStr;
     $queryStr .= 'ORDER BY ';
     foreach ($ps_orders as $one_order) {
         foreach ($one_order as $cur_order_col => $cur_order_dir) {
             $queryStr .= "{$cur_order_col} {$cur_order_dir}, ";
         }
     }
     $queryStr .= 'ml.rank, ml.id, mll.id';
     $rows = $g_ado_db->GetAll($queryStr);
     if (is_array($rows)) {
         $p_count = count($rows);
         if ($mc_limit) {
             $rows = array_slice($rows, $mc_start, $mc_limit);
         }
         if ($mc_start && !$mc_limit) {
             $rows = array_slice($rows, $mc_start);
         }
     }
     $mm_objs = array();
     if (is_array($rows)) {
         foreach ($rows as $row) {
             $tmp_loc = trim(strtolower($row['loc']));
             $loc_matches = array();
             if (!preg_match('/^point\\((?P<latitude>[\\d.-]+)\\s(?P<longitude>[\\d.-]+)\\)$/', $tmp_loc, $loc_matches)) {
                 continue;
             }
             $tmp_latitude = $loc_matches['latitude'];
             $tmp_longitude = $loc_matches['longitude'];
             $tmpPoint = array();
             $tmpPoint['latitude'] = $tmp_latitude;
             $tmpPoint['longitude'] = $tmp_longitude;
             $tmpPoint['loc_id'] = $row['ml_id'];
             $tmpPoint['con_id'] = $row['mll_id'];
             $tmpPoint['style'] = $row['poi_style'];
             $tmpPoint['rank'] = $row['rank'];
             $tmpPoint['display'] = $row['poi_display'];
             $tmpPoint['title'] = $row['poi_name'];
             $tmpPoint['link'] = $row['poi_link'];
             $tmpPoint['perex'] = $row['poi_perex'];
             $tmpPoint['content_type'] = $row['poi_content_type'];
             $tmpPoint['content'] = $row['poi_content'];
             $tmpPoint['text'] = $row['poi_text'];
             $tmpPoint['image_mm'] = 0;
             $tmpPoint['image_src'] = '';
             $tmpPoint['image_width'] = '';
             $tmpPoint['image_height'] = '';
             $tmp_image = null;
             $tmp_video = null;
             if ($row['image_mm']) {
                 $multimedia_spec = $row['image_mm'];
                 $multimedia_link = $multimedia_spec;
                 // the dynamic maps (i.e. with mc_mapCons) have grouping by multimedia,
                 // while article maps have all multimedia separated (and read with concat)
                 if (!$mc_mapCons) {
                     $multimedia_spec_arr = explode('-', $multimedia_spec);
                     if (2 == count($multimedia_spec_arr)) {
                         $multimedia_spec = 0 + $multimedia_spec_arr[0];
                         $multimedia_link = 0 + $multimedia_spec_arr[1];
                     }
                 }
                 $tmpPoint['image_mm'] = $multimedia_link;
                 $tmp_image = new Geo_Multimedia($multimedia_spec);
                 if ($tmp_image) {
                     $tmpPoint['image_src'] = $tmp_image->getSrc();
                     $tmpPoint['image_width'] = $tmp_image->getWidth();
                     $tmpPoint['image_height'] = $tmp_image->getHeight();
                 }
             }
             $tmpPoint['video_mm'] = 0;
             $tmpPoint['video_id'] = '';
             $tmpPoint['video_type'] = '';
             $tmpPoint['video_width'] = '';
             $tmpPoint['video_height'] = '';
             if ($row['video_mm']) {
                 $multimedia_spec = $row['video_mm'];
                 $multimedia_link = $multimedia_spec;
                 // the dynamic maps (i.e. with mc_mapCons) have grouping by multimedia,
                 // while article maps have all multimedia separated (and read with concat)
                 if (!$mc_mapCons) {
                     $multimedia_spec_arr = explode('-', $multimedia_spec);
                     if (2 == count($multimedia_spec_arr)) {
                         $multimedia_spec = 0 + $multimedia_spec_arr[0];
                         $multimedia_link = 0 + $multimedia_spec_arr[1];
                     }
                 }
                 $tmpPoint['video_mm'] = $multimedia_link;
                 $tmp_video = new Geo_Multimedia($multimedia_spec);
                 if ($tmp_video) {
                     $tmpPoint['video_id'] = $tmp_video->getSrc();
                     $tmpPoint['video_type'] = $tmp_video->getSpec();
                     $tmpPoint['video_width'] = $tmp_video->getWidth();
                     $tmpPoint['video_height'] = $tmp_video->getHeight();
                 }
             }
             if ($tmp_image || $tmp_video) {
                 $mm_objs[$row['ml_id']] = array('image' => $tmp_image, 'video' => $tmp_video);
             }
             // for the list-of-objects array
             $tmpPoint['map_id'] = $ps_mapId;
             $tmpPoint['art_number'] = 0;
             $tmpPoint['art_numbers'] = '';
             if ($mc_mapCons) {
                 $tmpPoint['map_id'] = $row['m_id'];
                 $tmpPoint['art_number'] = $row['art_number'];
                 $tmpPoint['art_numbers'] = $row['art_numbers'];
             }
             $tmpPoint['geo_id'] = $row['loc_id'];
             $tmpPoint['geo_type'] = $row['poi_type'];
             $tmpPoint['geo_style'] = $row['poi_type_style'];
             $tmpPoint['geo_radius'] = $row['l_radius'];
             $tmpPoint['geo_user'] = $row['l_user'];
             $tmpPoint['geo_updated'] = $row['l_updated'];
             $tmpPoint['txt_id'] = $row['con_id'];
             $tmpPoint['txt_user'] = $row['c_user'];
             $tmpPoint['txt_updated'] = $row['c_updated'];
             $dataArray[] = $tmpPoint;
         }
     }
     if (0 == count($dataArray)) {
         return array();
     }
     $dataArray_tmp = $dataArray;
     $objsArray = array();
     $dataArray = array();
     foreach ($dataArray_tmp as $one_poi) {
         $one_poi_source = array('id' => $one_poi['loc_id'], 'fk_map_id' => $one_poi['map_id'], 'fk_location_id' => $one_poi['geo_id'], 'poi_style' => $one_poi['style'], 'rank' => $one_poi['rank']);
         $one_poi_obj = new self($one_poi_source, true);
         $one_geo_source = array('poi_location' => null, 'poi_type' => $one_poi['geo_type'], 'poi_type_style' => $one_poi['geo_style'], 'poi_center' => null, 'poi_radius' => $one_poi['geo_radius'], 'IdUser' => $one_poi['geo_user'], 'time_updated' => $one_poi['geo_updated'], 'latitude' => $one_poi['latitude'], 'longitude' => $one_poi['longitude']);
         $one_poi_obj->location = new Geo_Location($one_geo_source, true);
         $one_lan_source = array('id' => $one_poi['con_id'], 'fk_maplocation_id' => $one_poi['loc_id'], 'fk_language_id' => $ps_languageId, 'fk_content_id' => $one_poi['txt_id'], 'poi_display' => $one_poi['display']);
         $one_poi_obj->setLanguage($ps_languageId, new Geo_MapLocationLanguage(NULL, 0, $one_lan_source, true));
         $one_txt_source = array('id' => $one_poi['txt_id'], 'poi_name' => $one_poi['title'], 'poi_link' => $one_poi['link'], 'poi_perex' => $one_poi['perex'], 'poi_content_type' => $one_poi['content_type'], 'poi_content' => $one_poi['content'], 'poi_text' => $one_poi['text'], 'IdUser' => $one_poi['txt_user'], 'time_updated' => $one_poi['txt_updated']);
         $one_poi_obj->setContent($ps_languageId, new Geo_MapLocationContent(NULL, NULL, $one_txt_source, true));
         if (array_key_exists($one_poi['loc_id'], $mm_objs)) {
             $poi_mm = $mm_objs[$one_poi['loc_id']];
             $one_poi_obj->multimedia = array();
             foreach ($poi_mm as $one_mm) {
                 if ($one_mm) {
                     $one_poi_obj->multimedia[] = $one_mm;
                 }
             }
         }
         $objsArray[] = $one_poi_obj;
         if (!$p_skipCache || $ps_saveArray) {
             $dataArray[] = $one_poi;
         }
     }
     if (!$p_skipCache && CampCache::IsEnabled()) {
         $cacheList_arr->storeInCache(array('count' => $p_count, 'data' => $dataArray));
         $cacheList_obj->storeInCache(array('count' => $p_count, 'data' => $objsArray));
     }
     if (empty(self::$s_found_maplocations_list_ext)) {
         self::$s_found_maplocations_list_ext = array();
     }
     self::$s_found_maplocations_list_ext[$list_spec_str] = array('count' => $p_count, 'list_raw' => $dataArray, 'list_obj' => $objsArray);
     if ($ps_saveArray) {
         $p_rawData = $dataArray;
     }
     return $objsArray;
 }
Esempio n. 15
0
 /**
  * Set the ID of the author who wrote this article.
  *
  * @param int $p_value
  * @return boolean
  */
 public function setAuthor(Author $p_author)
 {
     $defaultAuthorType = $p_author->setType();
     // Links the author to the article
     $articleAuthorObj = new ArticleAuthor($this->getArticleNumber(),
                                           $this->getLanguageId(),
                                           $p_author->getId(), $defaultAuthorType);
     if (!$articleAuthorObj->exists()) {
         $articleAuthorObj->create();
     }
 } // fn setAuthor
Esempio n. 16
0
    protected function getAuthors()
    {
        $authors = ArticleAuthor::GetAuthorsByArticle($this->m_dbObject->getProperty('Number'),
            $this->m_dbObject->getProperty('IdLanguage'));
        if (!is_array($authors)) {
            $authors = array();
        }

        $metaAuthors = array();
        foreach($authors as $author) {
            $metaAuthors[] = new MetaAuthor($author->getId(), $author->getType());
        }
        return $metaAuthors;
    }
Esempio n. 17
0
	/**
	 * Process item
	 * @param Article $article
	 * @return array
	 */
	public function processItem(Article $article)
	{
		global $g_user, $Campsite;

		$articleLinkParams = '?f_publication_id=' . $article->getPublicationId()
		. '&amp;f_issue_number=' . $article->getIssueNumber() . '&amp;f_section_number=' . $article->getSectionNumber()
		. '&amp;f_article_number=' . $article->getArticleNumber() . '&amp;f_language_id=' . $article->getLanguageId()
		. '&amp;f_language_selected=' . $article->getLanguageId();
		$articleLink = $Campsite['WEBSITE_URL'].'/admin/articles/edit.php' . $articleLinkParams;
		$previewLink = $Campsite['WEBSITE_URL'].'/admin/articles/preview.php' . $articleLinkParams;

		$lockInfo = '';
		$lockHighlight = false;
		$timeDiff = camp_time_diff_str($article->getLockTime());
		if ($article->isLocked() && ($timeDiff['days'] <= 0)) {
			$lockUser = new User($article->getLockedByUser());
			if ($timeDiff['hours'] > 0) {
				$lockInfo = getGS('The article has been locked by $1 ($2) $3 hour(s) and $4 minute(s) ago.',
				htmlspecialchars($lockUser->getRealName()),
				htmlspecialchars($lockUser->getUserName()),
				$timeDiff['hours'], $timeDiff['minutes']);
			} else {
				$lockInfo = getGS('The article has been locked by $1 ($2) $3 minute(s) ago.',
				htmlspecialchars($lockUser->getRealName()),
				htmlspecialchars($lockUser->getUserName()),
				$timeDiff['minutes']);
			}
			if ($article->getLockedByUser() != $g_user->getUserId()) {
				$lockHighlight = true;
			}
		}

		$tmpUser = new User($article->getCreatorId());
		$tmpArticleType = new ArticleType($article->getType());

		$tmpAuthor = new Author();
		$articleAuthors = ArticleAuthor::GetAuthorsByArticle($article->getArticleNumber(), $article->getLanguageId());
		foreach((array) $articleAuthors as $author) {
			if (strtolower($author->getAuthorType()->getName()) == 'author') {
				$tmpAuthor = $author;
				break;
			}
		}
		if (!$tmpAuthor->exists() && isset($articleAuthors[0])) {
			$tmpAuthor = $articleAuthors[0];
		}

		$onFrontPage = $article->onFrontPage() ? getGS('Yes') : getGS('No');
		$onSectionPage = $article->onSectionPage() ? getGS('Yes') : getGS('No');

		$imagesNo = (int) ArticleImage::GetImagesByArticleNumber($article->getArticleNumber(), true);
		$topicsNo = (int) ArticleTopic::GetArticleTopics($article->getArticleNumber(), true);
		$commentsNo = '';
		if ($article->commentsEnabled()) {
			$commentsNo = (int) ArticleComment::GetArticleComments($article->getArticleNumber(), $article->getLanguageId(), null, true);
		} else {
			$commentsNo = 'No';
		}

		// get language code
		$language = new Language($article->getLanguageId());

		return array(
		$article->getArticleNumber(),
		$article->getLanguageId(),
		$article->getOrder(),
		sprintf('%s <a href="%s" title="%s %s">%s</a>',
		$article->isLocked() ? '<span class="ui-icon ui-icon-locked' . (!$lockHighlight ? ' current-user' : '' ) . '" title="' . $lockInfo . '"></span>' : '',
		$articleLink,
		getGS('Edit'), $article->getName() . " ({$article->getLanguageName()})",
		$article->getName() . (empty($_REQUEST['language']) ? " ({$language->getCode()})" : '')),
		$tmpArticleType->getDisplayName(),
		$tmpUser->getRealName(),
		$tmpAuthor->getName(),
		$article->getWorkflowStatus(),
		$onFrontPage,
		$onSectionPage,
		$imagesNo,
		$topicsNo,
		$commentsNo,
		(int) $article->getReads(),
		Geo_Map::GetArticleMapId($article) != NULL ? getGS('Yes') : getGS('No'),
		(int) sizeof(Geo_Map::GetLocationsByArticle($article)),
		$article->getCreationDate(),
		$article->getPublishDate(),
		$article->getLastModified(),
		);
	}
Esempio n. 18
0
    /**
     * @return boolean
     */
    public function delete()
    {
        if (!$this->exists()) {
            return false;
        }

        // Unlink articles
        ArticleAuthor::OnAuthorTypeDelete($this->getId());
        // Unlink authors
        AuthorAssignedType::OnAuthorTypeDelete($this->getId());
        // Delete this author type
        $authorType = $this->getName();
        $result = parent::delete();
        if ($result) {
            if (function_exists("camp_load_translation_strings")) {
                camp_load_translation_strings("api");
            }
            $logText = getGS('Article type "$1" deleted.', $authorType);
            Log::Message($logText, null, 176);
        }
        return $result;
    }
Esempio n. 19
0
                continue;
            }
            $authorData = Author::ReadName($author);
            $authorObj->create($authorData);
        } elseif ($blogService->isBlogger($g_user)) {
            // test if using authors from blog
            if (!$blogService->isBlogAuthor($authorObj, $blogInfo)) {
                continue;
            }
        }
        // Sets the author type selected
        $author_type = $f_article_author_type[$i];
        $authorObj->setType($author_type);
        // Links the author to the article
        if ($authorObj->getId() != 0) {
            $articleAuthorObj = new ArticleAuthor($articleObj->getArticleNumber(), $articleObj->getLanguageId(), $authorObj->getId(), $author_type, $i + 1);
        }
        if (isset($articleAuthorObj) && !$articleAuthorObj->exists()) {
            $articleAuthorObj->create();
        }
        $i++;
    }
}
// Update the article.
$articleObj->setTitle($f_article_title);
$articleObj->setIsIndexed(false);
if (!empty($f_comment_status)) {
    if ($f_comment_status == "enabled" || $f_comment_status == "locked") {
        $commentsEnabled = true;
    } else {
        $commentsEnabled = false;
Esempio n. 20
0
 /**
  * Test if author is blog author
  *
  * @param Author $author
  * @param Article $blogInfo
  * @return bool
  */
 public function isBlogAuthor(\Author $author, \Article $blogInfo)
 {
     return in_array($author->getId(), array_map(function ($blogAuthor) {
         return $blogAuthor->getId();
     }, \ArticleAuthor::GetAuthorsByArticle($blogInfo->getArticleNumber(), $blogInfo->getLanguageId())));
 }
Esempio n. 21
0
 /**
  * Process item
  * @param  Article $article
  * @return array
  */
 public function processItem($article)
 {
     global $g_user, $Campsite;
     $translator = \Zend_Registry::get('container')->getService('translator');
     $editorService = \Zend_Registry::get('container')->getService('newscoop.editor');
     $articleLink = $editorService->getLink($article);
     $articleLinkParams = $editorService->getLinkParameters($article);
     $articleLinkParamsTranslate = $articleLinkParams . '&amp;f_action=translate&amp;f_action_workflow=' . $article->getWorkflowStatus() . '&amp;f_article_code=' . $article->getArticleNumber() . '_' . $article->getLanguageId();
     $previewLink = $Campsite['WEBSITE_URL'] . '/admin/articles/preview.php' . $editorService->getLinkParameters($article);
     $htmlPreviewLink = '<a href="' . $previewLink . '" target="_blank" title="' . $translator->trans('Preview') . '">' . $translator->trans('Preview') . '</a>';
     $translateLink = $Campsite['WEBSITE_URL'] . '/admin/articles/translate.php' . $articleLinkParamsTranslate;
     $htmlTranslateLink = '<a href="' . $translateLink . '" target="_blank" title="' . $translator->trans('Translate') . '">' . $translator->trans('Translate') . '</a>';
     $lockInfo = '';
     $lockHighlight = false;
     $timeDiff = camp_time_diff_str($article->getLockTime());
     if ($article->isLocked() && $timeDiff['days'] <= 0) {
         $lockUser = new User($article->getLockedByUser());
         if ($timeDiff['hours'] > 0) {
             $lockInfo = $translator->trans('The article has been locked by $1 ($2) $3 hour(s) and $4 minute(s) ago.', array('$1' => htmlspecialchars($lockUser->getRealName()), '$2' => htmlspecialchars($lockUser->getUserName()), '$3' => $timeDiff['hours'], '$4' => $timeDiff['minutes']), 'articles');
         } else {
             $lockInfo = $translator->trans('The article has been locked by $1 ($2) $3 minute(s) ago.', array('$1' => htmlspecialchars($lockUser->getRealName()), '$2' => htmlspecialchars($lockUser->getUserName()), '$3' => $timeDiff['minutes']), 'articles');
         }
         if ($article->getLockedByUser() != $g_user->getUserId()) {
             $lockHighlight = true;
         }
     }
     $tmpUser = new User($article->getCreatorId());
     $tmpArticleType = new ArticleType($article->getType());
     $tmpAuthor = new Author();
     $articleAuthors = ArticleAuthor::GetAuthorsByArticle($article->getArticleNumber(), $article->getLanguageId());
     foreach ((array) $articleAuthors as $author) {
         if (strtolower($author->getAuthorType()->getName()) == 'author') {
             $tmpAuthor = $author;
             break;
         }
     }
     if (!$tmpAuthor->exists() && isset($articleAuthors[0])) {
         $tmpAuthor = $articleAuthors[0];
     }
     $onFrontPage = $article->onFrontPage() ? $translator->trans('Yes') : $translator->trans('No');
     $onSectionPage = $article->onSectionPage() ? $translator->trans('Yes') : $translator->trans('No');
     $imagesNo = (int) ArticleImage::GetImagesByArticleNumber($article->getArticleNumber(), true);
     $topicsNo = (int) ArticleTopic::GetArticleTopics($article->getArticleNumber(), true);
     $commentsNo = '';
     if ($article->commentsEnabled()) {
         global $controller;
         $repositoryComments = $controller->getHelper('entity')->getRepository('Newscoop\\Entity\\Comment');
         $filter = array('thread' => $article->getArticleNumber(), 'language' => $article->getLanguageId());
         $params = array('sFilter' => $filter);
         $commentsNo = $repositoryComments->getCount($params);
     } else {
         $commentsNo = 'No';
     }
     // get language code
     $language = new Language($article->getLanguageId());
     return array($article->getArticleNumber(), $article->getLanguageId(), $article->getOrder(), sprintf('%s <a href="%s" title="%s %s">%s</a>', $article->isLocked() ? '<span class="ui-icon ui-icon-locked' . (!$lockHighlight ? ' current-user' : '') . '" title="' . $lockInfo . '"></span>' : '', $articleLink, $translator->trans('Edit'), htmlspecialchars($article->getName() . " ({$article->getLanguageName()})"), htmlspecialchars($article->getName() . (empty($_REQUEST['language']) ? " ({$language->getCode()})" : ''))), htmlspecialchars($article->getSection()->getName()), $article->getWebcode(), htmlspecialchars($tmpArticleType->getDisplayName()), htmlspecialchars($tmpUser->getRealName()), htmlspecialchars($tmpAuthor->getName()), $article->getWorkflowStatus(), $onFrontPage, $onSectionPage, $imagesNo, $topicsNo, $commentsNo, (int) $article->getReads(), Geo_Map::GetArticleMapId($article) != null ? $translator->trans('Yes') : $translator->trans('No'), (int) sizeof(Geo_Map::GetLocationsByArticle($article)), $article->getCreationDate(), $article->getPublishDate(), $article->getLastModified(), $htmlPreviewLink, $htmlTranslateLink);
 }
Esempio n. 22
0
    ?>
    close(1);
});
<?php 
}
?>



<?php 
$allAuthors = array();
if ($userIsBlogger) {
    $blogInfo = $blogService->getBlogInfo($g_user);
    $allAuthors = array_map(function ($author) {
        return $author->getName();
    }, ArticleAuthor::GetAuthorsByArticle($blogInfo->getArticleNumber(), $blogInfo->getLanguageId()));
    $quoteStringFn = create_function('&$value, $key', '$value = json_encode((string) $value);');
    array_walk($allAuthors, $quoteStringFn);
    ?>
var authorsList = [<?php 
    echo implode(",\n", $allAuthors);
    ?>
];

$(".aauthor").autocomplete({ source: authorsList });

<?php 
} else {
    ?>
// authors autocomplete
$(".aauthor").live('focus', function() {
Esempio n. 23
0
      function  addAuthor(){
          var rnumber=Math.floor(Math.random()*9876)
          $('#authorContainer ul').append('<li id="author_li' + rnumber + '"><div class="left-floated"><div style="margin-top:1px"><select name="f_article_author_type[]" id="article_author_type' + rnumber + '" class="input_select aaselect" onchange="" style="width:130px;height:100%;margin-bottom:2px;float:none"><?php echo drawComboContent(); ?></select></div></div><div class="position-helper"><input type="text" name="f_article_author[]" id="f_article_author' + rnumber + '" size="45" class="input_text aauthor" value="" autocomplete="off" /><a class="ui-state-default icon-button no-text" href="#" id="removeauthor' + rnumber + '" onclick="deleteAuthor(\'' + rnumber + '\');"><span class="ui-icon ui-icon-closethick"></span></a></div></li>');
      }

      function deleteAuthor(id, empty){
          $('#f_article_author' + id).remove();
          $('#article_author_type' + id).remove();
          $('#removeauthor' + id).remove();
          $('#author_li' + id).remove();
          $('#article-main').addClass('changed');
      }
      </script>
      <?php
      // Get the list of authors
      $authors = ArticleAuthor::GetAuthorsByArticle($articleObj->getArticleNumber(), $articleObj->getLanguageId());
      if ($inEditMode) {
      ?>
      <div id="authorAutoComplete">
      <ul>
        <li>
          <label><?php putGS('Authors'); ?></label>
          <div id="authorContainer">
          <ul>
      <?php
          if (!empty($authors)) {
              $i = 0;
              foreach ((array) $authors as $author) {
      ?>
            <li id="<?php p('author_li'.$i); ?>">
              <div class="left-floated">