2010-07-02 21:37:43 -04:00
< ? php
2011-01-13 00:04:49 -05:00
2010-07-10 03:45:18 -04:00
function directory_init ( & $a ) {
$a -> set_pager_itemspage ( 60 );
}
2010-07-02 21:37:43 -04:00
2010-12-12 21:43:32 -05:00
function directory_post ( & $a ) {
if ( x ( $_POST , 'search' ))
$a -> data [ 'search' ] = $_POST [ 'search' ];
}
2010-07-02 21:37:43 -04:00
function directory_content ( & $a ) {
2011-04-21 20:29:47 -04:00
2011-05-16 21:52:27 -04:00
$everything = (( $a -> argc > 1 && $a -> argv [ 1 ] === 'all' && is_site_admin ()) ? true : false );
2011-04-21 20:29:47 -04:00
if (( get_config ( 'system' , 'block_public' )) && ( ! local_user ()) && ( ! remote_user ())) {
notice ( t ( 'Public access denied.' ) . EOL );
return ;
}
2010-10-31 19:38:22 -04:00
$o = '' ;
2011-07-25 10:52:30 -04:00
$o .= set_nav_selected ( 'nav-directory-link' );
2011-01-07 07:33:34 -05:00
if ( x ( $_SESSION , 'theme' ))
unset ( $_SESSION [ 'theme' ]);
2010-07-10 06:26:21 -04:00
2010-12-12 21:43:32 -05:00
if ( x ( $a -> data , 'search' ))
$search = notags ( trim ( $a -> data [ 'search' ]));
else
2010-12-19 22:55:03 -05:00
$search = (( x ( $_GET , 'search' )) ? notags ( trim ( rawurldecode ( $_GET [ 'search' ]))) : '' );
2010-07-02 21:37:43 -04:00
2011-05-11 07:37:13 -04:00
$tpl = get_markup_template ( 'directory_header.tpl' );
2010-07-02 21:37:43 -04:00
2010-09-23 21:33:07 -04:00
$globaldir = '' ;
$gdirpath = dirname ( get_config ( 'system' , 'directory_submit_url' ));
if ( strlen ( $gdirpath )) {
$globaldir = '<ul><li><div id="global-directory-link"><a href="'
. $gdirpath . '">' . t ( 'Global Directory' ) . '</a></div></li></ul>' ;
}
2010-08-19 07:59:31 -04:00
2011-05-16 21:52:27 -04:00
$admin = '' ;
if ( is_site_admin ()) {
if ( $everything )
$admin = '<ul><li><div id="directory-admin-link"><a href="' . $a -> get_baseurl () . '/directory' . '">' . t ( 'Normal site view' ) . '</a></div></li></ul>' ;
else
$admin = '<ul><li><div id="directory-admin-link"><a href="' . $a -> get_baseurl () . '/directory/all' . '">' . t ( 'View all site entries' ) . '</a></div></li></ul>' ;
}
2010-07-09 06:10:28 -04:00
$o .= replace_macros ( $tpl , array (
2010-07-12 23:16:27 -04:00
'$search' => $search ,
2010-09-23 21:33:07 -04:00
'$globaldir' => $globaldir ,
2011-05-16 21:52:27 -04:00
'$admin' => $admin ,
2011-04-07 01:42:08 -04:00
'$finding' => ( strlen ( $search ) ? '<h4>' . t ( 'Finding: ' ) . " ' " . $search . " ' " . '</h4>' : " " ),
'$sitedir' => t ( 'Site Directory' ),
'$submit' => t ( 'Find' )
2010-07-09 06:10:28 -04:00
));
2010-07-10 01:47:32 -04:00
if ( $search )
$search = dbesc ( $search );
2011-03-14 03:28:49 -04:00
$sql_extra = (( strlen ( $search )) ? " AND MATCH (`profile`.`name`, `user`.`nickname`, `pdesc`, `locality`,`region`,`country-name`,`gender`,`marital`,`sexual`,`about`,`romance`,`work`,`education`,`pub_keywords`,`prv_keywords` ) AGAINST (' $search ' IN BOOLEAN MODE) " : " " );
2010-07-10 01:47:32 -04:00
2011-05-16 21:52:27 -04:00
$publish = (( get_config ( 'system' , 'publish_all' ) || $everything ) ? '' : " AND `publish` = 1 " );
2010-07-10 03:45:18 -04:00
2011-01-03 00:01:07 -05:00
2011-01-03 01:09:54 -05:00
$r = 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 03:45:18 -04:00
if ( count ( $r ))
$a -> set_pager_total ( $r [ 0 ][ 'total' ]);
2011-05-16 21:52:27 -04:00
if ( $everything )
$order = " ORDER BY `register_date` DESC " ;
else
$order = " ORDER BY `name` ASC " ;
2010-07-10 03:45:18 -04:00
2011-05-16 21:52:27 -04:00
$r = q ( " SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d " ,
2010-07-10 03:45:18 -04:00
intval ( $a -> pager [ 'start' ]),
intval ( $a -> pager [ 'itemspage' ])
);
2010-07-02 21:37:43 -04:00
if ( count ( $r )) {
2011-05-11 07:37:13 -04:00
$tpl = get_markup_template ( 'directory_item.tpl' );
2010-07-02 21:37:43 -04:00
2010-07-09 20:39:55 -04:00
if ( in_array ( 'small' , $a -> argv ))
$photo = 'thumb' ;
else
$photo = 'photo' ;
2010-07-02 21:37:43 -04:00
foreach ( $r as $rr ) {
2010-07-31 05:18:37 -04:00
2010-07-09 20:39:55 -04:00
$profile_link = $a -> get_baseurl () . '/profile/' . (( strlen ( $rr [ 'nickname' ])) ? $rr [ 'nickname' ] : $rr [ 'profile_uid' ]);
2011-01-18 22:25:28 -05:00
$pdesc = (( $rr [ 'pdesc' ]) ? $rr [ 'pdesc' ] . '<br />' : '' );
2010-07-09 20:39:55 -04: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 01:47:32 -04:00
if ( strlen ( $rr [ 'dob' ])) {
if (( $years = age ( $rr [ 'dob' ], $rr [ 'timezone' ], '' )) != 0 )
2011-03-22 19:34:12 -04:00
$details .= '<br />' . t ( 'Age: ' ) . $years ;
2010-07-10 01:47:32 -04:00
}
2010-07-09 20:39:55 -04:00
if ( strlen ( $rr [ 'gender' ]))
2011-03-22 19:34:12 -04:00
$details .= '<br />' . t ( 'Gender: ' ) . $rr [ 'gender' ];
2010-07-09 04:17:20 -04:00
2010-12-25 18:01:02 -05:00
$entry = replace_macros ( $tpl , array (
2010-07-09 06:10:28 -04:00
'$id' => $rr [ 'id' ],
'$profile-link' => $profile_link ,
2010-07-09 20:39:55 -04:00
'$photo' => $rr [ $photo ],
2010-07-09 06:10:28 -04:00
'$alt-text' => $rr [ 'name' ],
'$name' => $rr [ 'name' ],
2011-01-18 22:25:28 -05:00
'$details' => $pdesc . $details
2010-07-09 04:17:20 -04:00
));
2010-07-02 21:37:43 -04:00
2010-12-25 18:01:02 -05:00
$arr = array ( 'contact' => $rr , 'entry' => $entry );
call_hooks ( 'directory_item' , $arr );
$o .= $entry ;
2010-07-02 21:37:43 -04:00
}
2010-12-25 18:01:02 -05:00
2010-07-09 06:10:28 -04:00
$o .= " <div class= \" directory-end \" ></div> \r \n " ;
2010-07-10 03:45:18 -04:00
$o .= paginate ( $a );
2010-07-02 21:37:43 -04:00
}
else
2011-05-23 05:39:57 -04:00
info ( t ( " No entries \x28 some entries may be hidden \x29 . " ) . EOL );
2010-07-09 06:10:28 -04:00
return $o ;
2011-05-23 05:39:57 -04:00
}