2012-06-04 16:58:40 +02:00
< ? php
/*
FusionPBX
Version : MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 ( the " License " ); you may not use this file except in compliance with
the License . You may obtain a copy of the License at
http :// www . mozilla . org / MPL /
Software distributed under the License is distributed on an " AS IS " basis ,
WITHOUT WARRANTY OF ANY KIND , either express or implied . See the License
for the specific language governing rights and limitations under the
License .
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane < markjcrane @ fusionpbx . com >
2023-07-14 01:50:09 +02:00
Portions created by the Initial Developer are Copyright ( C ) 2008 - 2023
2012-06-04 16:58:40 +02:00
the Initial Developer . All Rights Reserved .
Contributor ( s ) :
Mark J Crane < markjcrane @ fusionpbx . com >
*/
2014-12-26 16:47:37 +01:00
if ( $domains_processed == 1 ) {
2012-06-04 16:58:40 +02:00
2016-04-03 19:54:09 +02:00
//if the default groups do not exist add them
$group = new groups ;
$group -> defaults ();
2012-06-04 16:58:40 +02:00
2019-03-02 02:09:53 +01:00
//create the user view combines username, organization, contact first and last name
2019-08-24 05:38:53 +02:00
$database -> execute ( " DROP VIEW view_users; " , null );
2019-08-18 12:40:03 +02:00
$sql = " CREATE VIEW view_users AS ( \n " ;
2019-12-04 07:10:28 +01:00
$sql .= " select u.domain_uuid, u.user_uuid, d.domain_name, u.username, u.user_status, u.user_enabled, u.add_date, \n " ;
2020-02-19 06:05:31 +01:00
if ( file_exists ( $_SERVER [ " PROJECT_ROOT " ] . " /app/contacts/app_config.php " )) {
$sql .= " c.contact_uuid, c.contact_organization, c.contact_name_given ||' '|| c.contact_name_family as contact_name, c.contact_name_given, c.contact_name_family, \n " ;
}
2019-08-18 12:40:03 +02:00
$sql .= " ( \n " ;
$sql .= " select \n " ;
$sql .= " string_agg(g.group_name, ', ') \n " ;
$sql .= " from \n " ;
$sql .= " v_user_groups as ug, \n " ;
$sql .= " v_groups as g \n " ;
$sql .= " where \n " ;
$sql .= " ug.group_uuid = g.group_uuid \n " ;
$sql .= " and u.user_uuid = ug.user_uuid \n " ;
2021-07-10 08:52:47 +02:00
$sql .= " ) AS group_names, \n " ;
$sql .= " ( \n " ;
$sql .= " select \n " ;
$sql .= " string_agg(g.group_uuid::text, ', ') \n " ;
//$sql .= " array_agg(g.group_uuid::text) \n";
$sql .= " from \n " ;
$sql .= " v_user_groups as ug, \n " ;
$sql .= " v_groups as g \n " ;
$sql .= " where \n " ;
$sql .= " ug.group_uuid = g.group_uuid \n " ;
$sql .= " and u.user_uuid = ug.user_uuid \n " ;
$sql .= " ) AS group_uuids, \n " ;
2019-08-18 12:40:03 +02:00
$sql .= " ( \n " ;
$sql .= " SELECT group_level \n " ;
$sql .= " FROM v_user_groups ug, v_groups g \n " ;
$sql .= " WHERE (ug.group_uuid = g.group_uuid) \n " ;
$sql .= " AND (u.user_uuid = ug.user_uuid) \n " ;
2019-12-04 06:55:16 +01:00
$sql .= " ORDER BY group_level DESC \n " ;
2019-08-18 12:40:03 +02:00
$sql .= " LIMIT 1 \n " ;
$sql .= " ) AS group_level \n " ;
2020-02-19 06:05:31 +01:00
if ( file_exists ( $_SERVER [ " PROJECT_ROOT " ] . " /app/contacts/app_config.php " )) {
$sql .= " from v_contacts as c \n " ;
$sql .= " right join v_users u on u.contact_uuid = c.contact_uuid \n " ;
$sql .= " inner join v_domains as d on d.domain_uuid = u.domain_uuid \n " ;
}
else {
$sql .= " from v_users as u \n " ;
$sql .= " inner join v_domains as d on d.domain_uuid = u.domain_uuid \n " ;
}
2019-08-18 12:40:03 +02:00
$sql .= " where 1 = 1 \n " ;
$sql .= " order by u.username asc \n " ;
$sql .= " ); \n " ;
2019-07-25 17:16:20 +02:00
$database -> execute ( $sql , null );
2019-03-02 02:09:53 +01:00
unset ( $sql );
2014-12-26 16:47:37 +01:00
//find rows that have a null group_uuid and set the correct group_uuid
2019-02-09 15:57:56 +01:00
$sql = " select * from v_user_groups " ;
2014-12-26 16:47:37 +01:00
$sql .= " where group_uuid is null; " ;
2019-07-25 17:16:20 +02:00
$result = $database -> select ( $sql , null , 'all' );
if ( is_array ( $result )) {
2014-12-26 16:47:37 +01:00
foreach ( $result as $row ) {
2023-05-05 18:46:37 +02:00
if ( ! empty ( $row [ 'group_name' ])) {
2014-12-26 16:47:37 +01:00
//get the group_uuid
$sql = " select group_uuid from v_groups " ;
2019-07-25 17:16:20 +02:00
$sql .= " where group_name = :group_name " ;
$parameters [ 'group_name' ] = $row [ 'group_name' ];
$group_uuid = $database -> execute ( $sql , $parameters , 'column' );
unset ( $sql , $parameters );
2019-02-09 16:36:30 +01:00
//set the user_group_uuid
2019-02-09 15:57:56 +01:00
$sql = " update v_user_groups set " ;
2019-07-25 17:16:20 +02:00
$sql .= " group_uuid = :group_uuid " ;
$sql .= " where user_group_uuid = :user_group_uuid; " ;
$parameters [ 'group_uuid' ] = $group_uuid ;
$parameters [ 'user_group_uuid' ] = $row [ 'user_group_uuid' ];
$database -> execute ( $sql , $parameters );
unset ( $sql , $parameters );
2014-12-26 16:47:37 +01:00
}
2014-07-24 00:00:03 +02:00
}
}
2019-07-29 18:55:37 +02:00
unset ( $result );
2019-08-27 07:53:32 +02:00
//update users email if they are all null
$sql = " select count(*) from v_users " ;
$sql .= " where user_email is not null; " ;
$num_rows = $database -> select ( $sql , null , 'column' );
if ( $num_rows == 0 ) {
$sql = " with users AS ( " ;
$sql .= " select u.domain_uuid, u.user_uuid, u.username, u.contact_uuid, e.email_address " ;
$sql .= " from v_users as u, v_contact_emails as e " ;
$sql .= " where u.contact_uuid is not null " ;
$sql .= " and u.contact_uuid = e.contact_uuid " ;
$sql .= " and e.email_primary = 1 " ;
$sql .= " ) " ;
$sql .= " update v_users " ;
$sql .= " set user_email = users.email_address " ;
$sql .= " from users " ;
$sql .= " where v_users.user_uuid = users.user_uuid; " ;
$database -> execute ( $sql , null );
}
2019-07-29 18:55:37 +02:00
//find rows that have a null group_uuid and set the correct group_uuid
$sql = " select count(*) from v_default_settings " ;
$sql .= " where default_setting_category = 'user'; " ;
$num_rows = $database -> select ( $sql , null , 'column' );
if ( $num_rows > 0 ) {
//build the array
$x = 0 ;
$array [ 'default_settings' ][ $x ][ 'default_setting_uuid' ] = " 38cf53d2-5fae-43ed-be93-33b0a5cc1c38 " ;
$array [ 'default_settings' ][ $x ][ 'default_setting_category' ] = " users " ;
$array [ 'default_settings' ][ $x ][ 'default_setting_subcategory' ] = " unique " ;
$x ++ ;
$array [ 'default_settings' ][ $x ][ 'default_setting_uuid' ] = " e3f5f4cd-0f17-428a-b788-2f2db91b6dc7 " ;
$array [ 'default_settings' ][ $x ][ 'default_setting_category' ] = " users " ;
$array [ 'default_settings' ][ $x ][ 'default_setting_subcategory' ] = " password_length " ;
$x ++ ;
$array [ 'default_settings' ][ $x ][ 'default_setting_uuid' ] = " 51c106d9-9aba-436b-b9b1-ff4937cef706 " ;
$array [ 'default_settings' ][ $x ][ 'default_setting_category' ] = " users " ;
$array [ 'default_settings' ][ $x ][ 'default_setting_subcategory' ] = " password_number " ;
$x ++ ;
$array [ 'default_settings' ][ $x ][ 'default_setting_uuid' ] = " f0e601b9-b619-4247-9624-c33605e96fd8 " ;
$array [ 'default_settings' ][ $x ][ 'default_setting_category' ] = " users " ;
$array [ 'default_settings' ][ $x ][ 'default_setting_subcategory' ] = " password_lowercase " ;
$x ++ ;
$array [ 'default_settings' ][ $x ][ 'default_setting_uuid' ] = " 973b6773-dac0-4041-844e-71c48fc9542c " ;
$array [ 'default_settings' ][ $x ][ 'default_setting_category' ] = " users " ;
$array [ 'default_settings' ][ $x ][ 'default_setting_subcategory' ] = " password_uppercase " ;
$x ++ ;
$array [ 'default_settings' ][ $x ][ 'default_setting_uuid' ] = " a6b6d9cc-fb25-4bc3-ad85-fa530d9b334d " ;
$array [ 'default_settings' ][ $x ][ 'default_setting_category' ] = " users " ;
$array [ 'default_settings' ][ $x ][ 'default_setting_subcategory' ] = " password_special " ;
//add the temporary permission
$p = new permissions ;
$p -> add ( " default_setting_edit " , 'temp' );
//save to the data
$database -> app_name = 'default_setting' ;
$database -> app_uuid = '2c2453c0-1bea-4475-9f44-4d969650de09' ;
2021-12-24 20:37:19 +01:00
$database -> save ( $array , false );
2019-07-29 18:55:37 +02:00
unset ( $array );
//remove the temporary permission
$p -> delete ( " default_setting_edit " , 'temp' );
}
2012-08-10 17:53:02 +02:00
2019-03-14 06:30:39 +01:00
//insert default password reset email template
if ( file_exists ( $_SERVER [ 'DOCUMENT_ROOT' ] . '/app/email_templates' )) {
2019-07-03 07:14:26 +02:00
//add the email templates to the database
$sql = " select count(*) as num_rows from v_email_templates " ;
$sql .= " where email_template_uuid = '05b529c4-fba7-4071-bab3-143b076392e7' " ;
2019-07-03 07:48:01 +02:00
$num_rows = $database -> select ( $sql , null , 'column' );
if ( $num_rows == 0 ) {
2019-07-03 07:14:26 +02:00
//build the array
$x = 0 ;
$array [ 'email_templates' ][ $x ][ 'email_template_uuid' ] = '05b529c4-fba7-4071-bab3-143b076392e7' ;
$array [ 'email_templates' ][ $x ][ 'template_language' ] = 'en-us' ;
$array [ 'email_templates' ][ $x ][ 'template_category' ] = 'password_reset' ;
$array [ 'email_templates' ][ $x ][ 'template_subcategory' ] = 'default' ;
$array [ 'email_templates' ][ $x ][ 'template_subject' ] = 'Password Reset' ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " <html> \n " ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " <body> \n " ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " <center><a href='https:// \$ { domain}'><img src=' \$ { logo_full}' style='width: 200px; height: auto; border: none;'></a></center><br /> \n " ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " A password reset was just requested for the FusionPBX user account associated with this email address.<br /><br /> \n " ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " <b>If you submitted this request</b>, click the button below to begin the password reset process for your user account.<br /><br /> " ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " \$ { reset_button}<br /><br /> \n " ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " If you did not initiate this action, however, please ignore this message and your password will remain unchanged. \n " ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " If you have questions or concerns regarding this email, please contact your system administrator. " ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " <br /><br /><br /> \n " ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " <a href='https:// \$ { domain}'><img src=' \$ { logo_shield}' width='31' height='30' border='0' align='left' style='margin-top: 3px; margin-right: 5px;'></a> \n " ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " <i><b>FusionPBX</b></i><br /> \n " ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " <a href='https:// \$ { domain}'> \$ { domain}</a> \n " ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " <br /><br /><br /> \n " ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " </body> \n " ;
$array [ 'email_templates' ][ $x ][ 'template_body' ] .= " </html> \n " ;
$array [ 'email_templates' ][ $x ][ 'template_type' ] = 'html' ;
$array [ 'email_templates' ][ $x ][ 'template_enabled' ] = 'true' ;
$array [ 'email_templates' ][ $x ][ 'template_description' ] = 'Default password reset email template.' ;
$x ++ ;
//add the temporary permission
$p = new permissions ;
$p -> add ( " email_template_add " , 'temp' );
$p -> add ( " email_template_edit " , 'temp' );
//save to the data
$database -> app_name = 'email_templates' ;
$database -> app_uuid = '8173e738-2523-46d5-8943-13883befd2fd' ;
2021-12-24 20:37:19 +01:00
$database -> save ( $array , false );
2019-07-03 07:14:26 +02:00
unset ( $array );
//remove the temporary permission
$p -> delete ( " email_template_add " , 'temp' );
$p -> delete ( " email_template_edit " , 'temp' );
}
2019-03-14 06:30:39 +01:00
}
2023-07-14 01:50:09 +02:00
//update the user_type when the value is null
$sql = " select count(*) from v_users " ;
$sql .= " where user_type is null; " ;
$num_rows = $database -> select ( $sql , null , 'column' );
if ( $num_rows > 0 ) {
$sql = " update v_users " ;
$sql .= " set user_type = 'default' " ;
$sql .= " where user_type is null; " ;
$database -> execute ( $sql , null );
}
2014-12-26 16:47:37 +01:00
}
2012-08-10 17:53:02 +02:00
2019-02-09 15:57:56 +01:00
?>