2010-07-03 03:37:43 +02:00
< ? php
2011-01-13 06:04:49 +01:00
2010-07-10 09:45:18 +02:00
function directory_init ( & $a ) {
$a -> set_pager_itemspage ( 60 );
2011-10-12 04:27:58 +02:00
if ( local_user ()) {
require_once ( 'include/contact_widgets.php' );
2015-10-17 19:45:57 +02:00
$a -> page [ 'aside' ] .= follow_widget ();
2011-10-12 04:27:58 +02:00
$a -> page [ 'aside' ] .= findpeople_widget ();
}
2012-09-07 01:24:34 +02:00
else {
2011-10-12 04:27:58 +02:00
unset ( $_SESSION [ 'theme' ]);
2012-09-07 01:24:34 +02:00
unset ( $_SESSION [ 'mobile-theme' ]);
}
2011-10-12 04:27:58 +02:00
2010-07-10 09:45:18 +02:00
}
2010-07-03 03:37:43 +02:00
2010-12-13 03:43:32 +01:00
function directory_post ( & $a ) {
if ( x ( $_POST , 'search' ))
$a -> data [ 'search' ] = $_POST [ 'search' ];
}
2010-07-03 03:37:43 +02:00
function directory_content ( & $a ) {
2015-06-10 22:54:41 +02:00
global $db ;
2011-04-22 02:29:47 +02:00
2014-08-13 00:13:13 +02:00
require_once ( " mod/proxy.php " );
2015-05-29 04:05:41 +02:00
if (( get_config ( 'system' , 'block_public' )) && ( ! local_user ()) && ( ! remote_user ()) ||
2015-10-16 21:44:10 +02:00
( get_config ( 'system' , 'block_local_dir' )) && ( ! local_user ()) && ( ! remote_user ())) {
2011-04-22 02:29:47 +02:00
notice ( t ( 'Public access denied.' ) . EOL );
return ;
}
2010-11-01 00:38:22 +01:00
$o = '' ;
2011-08-17 18:36:24 +02:00
nav_set_selected ( 'directory' );
2010-07-10 12:26:21 +02:00
2010-12-13 03:43:32 +01:00
if ( x ( $a -> data , 'search' ))
$search = notags ( trim ( $a -> data [ 'search' ]));
else
2010-12-20 04:55:03 +01:00
$search = (( x ( $_GET , 'search' )) ? notags ( trim ( rawurldecode ( $_GET [ 'search' ]))) : '' );
2010-07-03 03:37:43 +02:00
2015-10-16 21:44:10 +02:00
$gdirpath = '' ;
$dirurl = get_config ( 'system' , 'directory' );
if ( strlen ( $dirurl )) {
$gdirpath = zrl ( $dirurl , true );
2010-09-24 03:33:07 +02:00
}
2010-08-19 13:59:31 +02:00
2015-06-10 22:54:41 +02:00
if ( $search ) {
2010-07-10 07:47:32 +02:00
$search = dbesc ( $search );
2015-06-10 22:54:41 +02:00
$sql_extra = " AND ((`profile`.`name` LIKE '% $search %') OR
( `user` . `nickname` LIKE '%$search%' ) OR
( `pdesc` LIKE '%$search%' ) OR
( `locality` LIKE '%$search%' ) OR
( `region` LIKE '%$search%' ) OR
( `country-name` LIKE '%$search%' ) OR
( `gender` LIKE '%$search%' ) OR
( `marital` LIKE '%$search%' ) OR
( `sexual` LIKE '%$search%' ) OR
( `about` LIKE '%$search%' ) OR
( `romance` LIKE '%$search%' ) OR
( `work` LIKE '%$search%' ) OR
( `education` LIKE '%$search%' ) OR
( `pub_keywords` LIKE '%$search%' ) OR
( `prv_keywords` LIKE '%$search%' )) " ;
}
2010-07-10 07:47:32 +02:00
2012-03-18 06:14:17 +01:00
$publish = (( get_config ( 'system' , 'publish_all' )) ? '' : " AND `publish` = 1 " );
2010-07-10 09:45:18 +02:00
2011-01-03 06:01:07 +01:00
2015-06-10 22:54:41 +02:00
$r = $db -> q ( " SELECT COUNT(*) AS `total` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra " );
2010-07-10 09:45:18 +02:00
if ( count ( $r ))
$a -> set_pager_total ( $r [ 0 ][ 'total' ]);
2015-06-10 22:54:41 +02:00
$order = " ORDER BY `name` ASC " ;
2010-07-10 09:45:18 +02:00
2015-06-10 22:54:41 +02:00
$limit = intval ( $a -> pager [ 'start' ]) . " , " . intval ( $a -> pager [ 'itemspage' ]);
2010-07-10 09:45:18 +02:00
2015-06-10 22:54:41 +02:00
$r = $db -> q ( " SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` , `user`.`page-flags` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT " . $limit );
2010-07-03 03:37:43 +02:00
if ( count ( $r )) {
2010-07-10 02:39:55 +02:00
if ( in_array ( 'small' , $a -> argv ))
$photo = 'thumb' ;
else
$photo = 'photo' ;
2010-07-03 03:37:43 +02:00
foreach ( $r as $rr ) {
2010-07-31 11:18:37 +02:00
2010-07-10 02:39:55 +02:00
$profile_link = $a -> get_baseurl () . '/profile/' . (( strlen ( $rr [ 'nickname' ])) ? $rr [ 'nickname' ] : $rr [ 'profile_uid' ]);
2014-08-13 00:13:13 +02:00
2011-01-19 04:25:28 +01:00
$pdesc = (( $rr [ 'pdesc' ]) ? $rr [ 'pdesc' ] . '<br />' : '' );
2010-07-10 02:39:55 +02:00
$details = '' ;
if ( strlen ( $rr [ 'locality' ]))
$details .= $rr [ 'locality' ];
if ( strlen ( $rr [ 'region' ])) {
if ( strlen ( $rr [ 'locality' ]))
$details .= ', ' ;
$details .= $rr [ 'region' ];
}
if ( strlen ( $rr [ 'country-name' ])) {
if ( strlen ( $details ))
$details .= ', ' ;
$details .= $rr [ 'country-name' ];
}
2010-07-10 07:47:32 +02:00
if ( strlen ( $rr [ 'dob' ])) {
if (( $years = age ( $rr [ 'dob' ], $rr [ 'timezone' ], '' )) != 0 )
2011-03-23 00:34:12 +01:00
$details .= '<br />' . t ( 'Age: ' ) . $years ;
2010-07-10 07:47:32 +02:00
}
2010-07-10 02:39:55 +02:00
if ( strlen ( $rr [ 'gender' ]))
2011-03-23 00:34:12 +01:00
$details .= '<br />' . t ( 'Gender: ' ) . $rr [ 'gender' ];
2010-07-09 10:17:20 +02:00
2012-07-01 13:46:03 +02:00
if ( $rr [ 'page-flags' ] == PAGE_NORMAL )
$page_type = " Personal Profile " ;
if ( $rr [ 'page-flags' ] == PAGE_SOAPBOX )
$page_type = " Fan Page " ;
if ( $rr [ 'page-flags' ] == PAGE_COMMUNITY )
$page_type = " Community Forum " ;
if ( $rr [ 'page-flags' ] == PAGE_FREELOVE )
$page_type = " Open Forum " ;
if ( $rr [ 'page-flags' ] == PAGE_PRVGROUP )
$page_type = " Private Group " ;
$profile = $rr ;
if (( x ( $profile , 'address' ) == 1 )
|| ( x ( $profile , 'locality' ) == 1 )
|| ( x ( $profile , 'region' ) == 1 )
|| ( x ( $profile , 'postal-code' ) == 1 )
|| ( x ( $profile , 'country-name' ) == 1 ))
$location = t ( 'Location:' );
$gender = (( x ( $profile , 'gender' ) == 1 ) ? t ( 'Gender:' ) : False );
$marital = (( x ( $profile , 'marital' ) == 1 ) ? t ( 'Status:' ) : False );
$homepage = (( x ( $profile , 'homepage' ) == 1 ) ? t ( 'Homepage:' ) : False );
$about = (( x ( $profile , 'about' ) == 1 ) ? t ( 'About:' ) : False );
2014-08-13 00:13:13 +02:00
2012-12-22 20:57:29 +01:00
if ( $a -> theme [ 'template_engine' ] === 'internal' ) {
$location_e = template_escape ( $location );
}
else {
$location_e = $location ;
}
2015-10-16 21:44:10 +02:00
$entry = array (
'id' => $rr [ 'id' ],
'profile_link' => $profile_link ,
'photo' => proxy_url ( $a -> get_cached_avatar_image ( $rr [ $photo ]), false , PROXY_SIZE_THUMB ),
'alt_text' => $rr [ 'name' ],
'name' => $rr [ 'name' ],
'details' => $pdesc . $details ,
'page_type' => $page_type ,
'profile' => $profile ,
'location' => $location_e ,
'gender' => $gender ,
'pdesc' => $pdesc ,
'marital' => $marital ,
'homepage' => $homepage ,
'about' => $about ,
);
2010-07-03 03:37:43 +02:00
2010-12-26 00:01:02 +01:00
$arr = array ( 'contact' => $rr , 'entry' => $entry );
call_hooks ( 'directory_item' , $arr );
2014-08-13 00:13:13 +02:00
2012-07-01 13:46:03 +02:00
unset ( $profile );
unset ( $location );
2010-12-26 00:01:02 +01:00
2015-10-16 21:44:10 +02:00
if ( ! $arr [ 'entry' ])
continue ;
$entries [] = $arr [ 'entry' ];
2010-12-26 00:01:02 +01:00
2010-07-03 03:37:43 +02:00
}
2010-12-26 00:01:02 +01:00
2015-10-16 21:44:10 +02:00
$tpl = get_markup_template ( 'directory_header.tpl' );
$o .= replace_macros ( $tpl , array (
'$search' => $search ,
'$globaldir' => t ( 'Global Directory' ),
'$gdirpath' => $gdirpath ,
'$desc' => t ( 'Find on this site' ),
'$entries' => $entries ,
'$finding' => t ( 'Finding:' ),
'$findterm' => ( strlen ( $search ) ? $search : " " ),
2015-10-17 19:45:57 +02:00
'$title' => t ( 'Site Directory' ),
2015-10-16 21:44:10 +02:00
'$submit' => t ( 'Find' )
));
2010-07-10 09:45:18 +02:00
$o .= paginate ( $a );
2010-07-03 03:37:43 +02:00
}
else
2011-05-23 11:39:57 +02:00
info ( t ( " No entries \x28 some entries may be hidden \x29 . " ) . EOL );
2010-07-09 12:10:28 +02:00
return $o ;
2011-05-23 11:39:57 +02:00
}