/** * 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()); }
/** * @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); }
/** * 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; }
/** * @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; }
/** * @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; } }
/** * 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; }
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 {
/** * 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()); }
// 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);
<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>
/** * 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; }
/** * 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
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; }
/** * Process item * @param Article $article * @return array */ public function processItem(Article $article) { global $g_user, $Campsite; $articleLinkParams = '?f_publication_id=' . $article->getPublicationId() . '&f_issue_number=' . $article->getIssueNumber() . '&f_section_number=' . $article->getSectionNumber() . '&f_article_number=' . $article->getArticleNumber() . '&f_language_id=' . $article->getLanguageId() . '&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(), ); }
/** * @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; }
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;
/** * 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()))); }
/** * 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 . '&f_action=translate&f_action_workflow=' . $article->getWorkflowStatus() . '&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); }
?> 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() {
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">