summaryrefslogtreecommitdiff
path: root/modules/top10_pageviews/module.php
diff options
context:
space:
mode:
authorfisharebest <fisharebest@gmail.com>2010-05-12 18:02:44 +0000
committerfisharebest <fisharebest@gmail.com>2010-05-12 18:02:44 +0000
commitccf91e120a8099f216b109277444926485f68e36 (patch)
tree8a1afc20580bdfdeb755511c1d149147929080e9 /modules/top10_pageviews/module.php
parent1dc29368a477203270953fd023e74aaa324da7fc (diff)
downloadwebtrees-ccf91e120a8099f216b109277444926485f68e36.tar.gz
webtrees-ccf91e120a8099f216b109277444926485f68e36.tar.bz2
webtrees-ccf91e120a8099f216b109277444926485f68e36.zip
Convert blocks to modules
Diffstat (limited to 'modules/top10_pageviews/module.php')
-rw-r--r--modules/top10_pageviews/module.php108
1 files changed, 102 insertions, 6 deletions
diff --git a/modules/top10_pageviews/module.php b/modules/top10_pageviews/module.php
index f22bf749e8..04fe68ab02 100644
--- a/modules/top10_pageviews/module.php
+++ b/modules/top10_pageviews/module.php
@@ -22,8 +22,6 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
- * @package webtrees
- * @subpackage Modules
* @version $Id: class_media.php 5451 2009-05-05 22:15:34Z fisharebest $
*/
@@ -46,12 +44,110 @@ class top10_pageviews_WT_Module extends WT_Module implements WT_Module_Block {
}
// Implement class WT_Module_Block
- public function getBlock($block, $config, $side, $index) {
- // Generate the block contents
+ public function getBlock($block_id) {
+ global $ctype, $TBLPREFIX, $INDEX_DIRECTORY, $WT_IMAGES, $WT_IMAGE_DIR, $SHOW_COUNTER, $SHOW_SOURCES, $TEXT_DIRECTION;
+
+ $count_placement=get_block_setting($block_id, 'count_placement', 'before');
+ $num=get_block_setting($block_id, 'num', 10);
+ $block=get_block_setting($block_id, 'block', false);
+
+ $id=$this->getName().$block_id;
+ $title='';
+ if ($ctype=="gedcom" && WT_USER_GEDCOM_ADMIN || $ctype=="user" && WT_USER_ID) {
+ $title .= "<a href=\"javascript: configure block\" onclick=\"window.open('index_edit.php?action=configure&amp;ctype={$ctype}&amp;block_id={$block_id}', '_blank', 'top=50,left=50,width=600,height=350,scrollbars=1,resizable=1'); return false;\">";
+ $title .= "<img class=\"adminicon\" src=\"$WT_IMAGE_DIR/".$WT_IMAGES["admin"]["small"]."\" width=\"15\" height=\"15\" border=\"0\" alt=\"".i18n::translate('Configure')."\" /></a>";
+ }
+ $title .= i18n::translate('Most Viewed Items');
+ $title .= help_link('index_top10_pageviews');
+ $content = "";
+
+ // if the counter file does not exist then don't do anything
+ if (!$SHOW_COUNTER) {
+ if (WT_USER_IS_ADMIN) {
+ $content .= "<span class=\"error\">".i18n::translate('Hit counters must be enabled in the GEDCOM configuration, Display and Layout section, Hide and Show group.')."</span>";
+ }
+ } else {
+ // load the lines from the file
+ $top10=WT_DB::prepareLimit(
+ "SELECT page_parameter, page_count".
+ " FROM {$TBLPREFIX}hit_counter".
+ " WHERE gedcom_id=? AND page_name IN ('individual.php','family.php','source.php','repo.php','note.php','mediaviewer.php')".
+ " ORDER BY page_count DESC",
+ $num
+ )->execute(array(WT_GED_ID))->FetchAssoc();
+
+
+ if ($top10) {
+ if ($block) {
+ $content .= "<table width=\"90%\">";
+ } else {
+ $content .= "<table>";
+ }
+ foreach ($top10 as $id=>$count) {
+ $record=GedcomRecord::getInstance($id);
+ if ($record && $record->canDisplayDetails()) {
+ $content .= '<tr valign="top">';
+ if ($count_placement=='before') {
+ $content .= '<td dir="ltr" align="right">['.$count.']</td>';
+ }
+ $content .= '<td class="name2" ><a href="'.encode_url($record->getLinkUrl()).'">'.PrintReady($record->getFullName()).'</a></td>';
+ if ($count_placement=='after') {
+ $content .= '<td dir="ltr" align="right">['.$count.']</td>';
+ }
+ $content .= '</tr>';
+ }
+ }
+ $content .= "</table>";
+ } else {
+ $content .= "<b>".i18n::translate('There are currently no hits to show.')."</b>";
+ }
+ }
+
+ global $THEME_DIR;
+ if ($block) {
+ require $THEME_DIR.'templates/block_small_temp.php';
+ } else {
+ require $THEME_DIR.'templates/block_main_temp.php';
+ }
+ }
+
+ // Implement class WT_Module_Block
+ public function canLoadAjax() {
+ return true;
}
// Implement class WT_Module_Block
- public function configureBlock() {
- // Create an edit form, and respond to the result
+ public function isUserBlock() {
+ return false;
+ }
+
+ // Implement class WT_Module_Block
+ public function isGedcomBlock() {
+ return true;
+ }
+
+ // Implement class WT_Module_Block
+ public function configureBlock($block_id) {
+ if (safe_POST_bool('save')) {
+ set_block_setting($block_id, 'num', safe_POST_integer('num', 1, 10000));
+ set_block_setting($block_id, 'count_placement', safe_POST('count_placement', array('before', 'after'), 'before'));
+ echo WT_JS_START, 'window.opener.location.href=window.opener.location.href;window.close();', WT_JS_END;
+ exit;
+ }
+ require_once WT_ROOT.'includes/functions/functions_edit.php';
+
+ $num=get_block_setting($block_id, 'num', 10);
+ echo '<tr><td class="descriptionbox wrap width33">';
+ echo i18n::translate('Number of items to show');
+ echo '</td><td class="optionbox">';
+ echo '<input type="text" name="num" size="2" value="', $num, '" />';
+ echo '</td></tr>';
+
+ $count_placement=get_block_setting($block_id, 'count_placement', 'left');
+ print "<tr><td class=\"descriptionbox wrap width33\">";
+ print i18n::translate('Place counts before or after name?');
+ print "</td><td class=\"optionbox\">";
+ echo select_edit_control('count_placement', array('before'=>i18n::translate('before'), 'after'=>i18n::translate('after')), null, $count_placement, '');
+ echo '</td></tr>';
}
}