register();
// Add our namespace and the folder it maps to
$loader->addNamespace('\XeroPHP', dirname(__FILE__) . '/xero-php-master/src/XeroPHP');
$loader->addNamespace('\Biukop', dirname(__FILE__) . '/' );
$this->xero = new Xero();
$this->xero->init_wp();
}
//
//
///check auth
public function check_auth(){
global $pagename;
//echo $pagename;
}
///
// enqueue / register css /js
//
public function register_js_css() {
$this->nonce = wp_create_nonce('acaresydney');
$this->acaresydney_userid = get_query_var( 'acaresydney_userid' ) ;
$this->register_bts_js();
$this->register_timesheet_js_css();
}
private function register_bts_js()
{
wp_enqueue_style( 'bts', plugins_url('css/ts.css', __FILE__));
wp_enqueue_script('bts', plugins_url('js/ts.js', __FILE__), array('jquery', 'jquery-ui-core'));
wp_localize_script( 'bts', 'bts1', array(
'ajax_url' => admin_url( 'admin-ajax.php' ),
'nonce' => $this->nonce, // It is common practice to comma after
'display_name' => wp_get_current_user()->display_name,
'anonymous' => !is_user_logged_in(),
'me'=> get_current_user_id(),
'userid'=> $this->acaresydney_userid,
'load_user_img'=> plugins_url('img/loading_user.gif', __FILE__),
) );
}
private function register_timesheet_js_css(){
global $pagename;
if ($pagename != 'time-sheets'){
return;
}
wp_enqueue_style( 'bts_ts', plugins_url('css/bts_timesheet.css', __FILE__));
wp_enqueue_script( 'bts_ts', plugins_url('js/bts_timesheet.js', __FILE__), array( 'jquery' , 'bts' ));
wp_enqueue_script('mustache', plugins_url('js/mustache.min.js', __FILE__), array('jquery'));
}
public function sync_users()
{
//dummy sync
return;
}
// Usage: `wp sync_users --mininterval=123
public function sync_user_cli($args = array(), $assoc_args = array()){
$arguments = wp_parse_args( $assoc_args, array(
'mininterval' => 600,
) );
$this->xero->sync_users($arguments['mininterval']);
return;
}
public function bts_staff_item($attr){
return $this->template('staff_item', 'staff.html');
}
public function bts_client_item($attr){
return $this->template('client_item', 'client.html');
}
public function bts_job_item($attr){
$html =$this->template('job_item', 'job.html');
//$html = str_replace('[bts-tos-options]', $this->bts_tos_options([]), $html);
$html = do_shortcode($html);
return $html;
}
public function bts_tos_options($attr){
$result = "";
return $result;
}
//generate template based on html file
private function template($id, $file)
{
$text = '';
return $text;
}
function list_staff(){
check_ajax_referer('acaresydney');
return $this->list_people_by_role('staff');
}
function list_client(){
check_ajax_referer('acaresydney');
return $this->list_people_by_role('client');
}
function list_people_by_role($role){
check_ajax_referer('acaresydney');
// Handle the ajax request
$response = array(
'status' =>'error',
'users' => [],
);
//search all users that are staff
$staffq = new \WP_User_Query(array('role'=>$role));
$staff = $staffq->get_results();
if (! empty($staff)){
$response['status'] = 'success';
foreach( $staff as $s){
$response['users'][] = array(
'login' => $s->user_login,
'firstname'=> $s->first_name,
'lastname'=> $s->last_name,
'mobile'=> get_user_meta($s->ID, 'mobile', true),
'email'=> $s->user_email,
'wages'=> 0,
'hour' => 0 ,
'OT' => 0 ,
'petrol'=> 0 ,
'rating'=> 0,
'unconfirmedjob'=> 0,
);
}
}
wp_send_json($response);
wp_die();
}
//ajax get earnings rates
function get_payitem_earnings_rate()
{
$response= array(
'status' => 'success',
'options'=> get_option('bts_payitem_earnings_rate'),
);
wp_send_json($response);
}
}
$bb = new AcareOffice();
if ( defined( 'WP_CLI' ) && WP_CLI ) {
\WP_CLI::add_command( 'sync_users', array($bb, 'sync_user_cli'));
}