Example #1
0
 /**
  * Returns uploaded file to plugin's root folder
  *
  * @since  1.0
  * @uses   \Dropbox\Client
  * @see    https://www.dropbox.com/developers/core/start/php#listing
  * @return null|array
  */
 public function getUploadedFiles()
 {
     // never executed, but dont remove, ok?
     if ($this->isAuthenticated() === false) {
         return null;
     }
     // try {
     $client = new Dropbox\Client($this->getToken(), $this->applicationName);
     $response = $client->getMetadataWithChildren(rtrim($this->getDropboxPath(), '/'));
     // Formatting uploading data files for use their on backups page
     $files = array();
     foreach ($response['contents'] as $file) {
         $pathInfo = pathinfo($file['path']);
         $backupInfo = $this->getBackupInfoByFilename($pathInfo['basename']);
         if (!empty($backupInfo['ext']) && $backupInfo['ext'] == 'sql') {
             $files[$backupInfo['id']]['dropbox']['sql'] = $file;
             $files[$backupInfo['id']]['dropbox']['sql']['backupInfo'] = $backupInfo;
             $files[$backupInfo['id']]['dropbox']['sql']['backupInfo'] = dispatcherBup::applyFilters('addInfoIfEncryptedDb', $files[$backupInfo['id']]['dropbox']['sql']['backupInfo']);
         } elseif (!empty($backupInfo['ext']) && $backupInfo['ext'] == 'zip') {
             $files[$backupInfo['id']]['dropbox']['zip'] = $file;
             $files[$backupInfo['id']]['dropbox']['zip']['backupInfo'] = $backupInfo;
         }
     }
     unset($response['contents']);
     $response['contents'] = $files;
     return $response;
     // } catch (Exception $e) {
     //echo sprintf('Dropbox client error: %s. Try to refresh page', $e->getMessage());
     //}
 }
Example #2
0
<?php

Yii::app()->clientScript->registerCssFile(Yii::app()->cms->blocs['clouddocument']->assetsUrl . '/css/clouddocument.css');
$client = new Dropbox\Client(Yii::app()->params['dropboxToken'], 'dropbox-client');
/*
$pathError = Dropbox\Path::findError($bloc->path);
if ($pathError !== null) {
	throw new CHttpException(500, "Invalid <dropbox-path>: $pathError\n");
}
*/
// Getting metadata from db if not changed, otherwise getting from request and updating db.
if ($bloc->previous_folder_hash == '') {
    $metadata = $client->getMetadataWithChildren($bloc->path);
    if ($metadata === null) {
        //throw new CHttpException(500, "No file or folder at that path.\n");
    }
    $bloc->previous_folder_hash = $metadata['hash'];
    $bloc->previous_folder = serialize($metadata);
    $bloc->save(false);
} else {
    $metadata = $client->getMetadataWithChildrenIfChanged($bloc->path, $bloc->previous_folder_hash);
    if ($metadata[0] == true) {
        if ($metadata[1] === null) {
            //throw new CHttpException(500, "No file or folder at that path.\n");
        }
        $metadata = $metadata[1];
        $bloc->previous_folder_hash = $metadata['hash'];
        $bloc->previous_folder = serialize($metadata);
        $bloc->save(false);
    } else {
        $metadata = unserialize($bloc->previous_folder);
Example #3
0
 protected function generate_admin_salaries()
 {
     $this->load->model('project_model', 'project');
     $this->load->model('user_model', 'user');
     $this->load->model('event_model', 'event');
     $this->load->model('event_user_model', 'event_user');
     $this->load->model('deliverable_model', 'deliverable');
     $this->load->model('vendor_price_model', 'vendor_price');
     $this->load->model('cashflow_type_model', 'cashflow_type');
     $this->load->model('bank_account_model', 'bank_account');
     $this->load->model('cashflow_model', 'cashflow');
     $fahad = $this->user->get_by('name', 'Fahad Raza');
     $taimur = $this->user->get_by('name', 'Taimur Riaz Khan');
     $admins = array($fahad, $taimur);
     $admin_salary_id = $this->cashflow_type->get_by('name', 'Admin Salary')->id;
     $bank_account_id = $this->bank_account->get_by('name', 'Chaar Bhai')->id;
     $closed_projects = $this->project->get_many_by('closed_on BETWEEN "' . date('Y-m-d', strtotime("first day of last month")) . '" AND "' . date('Y-m-d', strtotime("last day of last month")) . '"');
     foreach ($closed_projects as $closed_project) {
         $inflows = 0;
         $outflows = 0;
         $project_cashflows = $this->cashflow->get_project_cashflows($closed_project->id);
         $has_daily_salary = FALSE;
         $has_albums = FALSE;
         foreach ($project_cashflows as $project_cashflow) {
             if ($project_cashflow->class === 'Inflow') {
                 $inflows += $project_cashflow->amount;
             } else {
                 $outflows += $project_cashflow->amount;
                 if ($project_cashflow->cashflow_type === 'Daily Salary') {
                     $has_daily_salary = TRUE;
                 } else {
                     if ($project_cashflow->cashflow_type === 'Albums') {
                         $has_albums = TRUE;
                     }
                 }
             }
         }
         if (!$has_daily_salary) {
             $daily_salary_id = $this->cashflow_type->get_by('name', 'Daily Salary')->id;
             $project_events = $this->event->get_many_by('project_id', $closed_project->id);
             $daily_salary_cashflows = array();
             foreach ($project_events as $project_event) {
                 $resources = $this->event_user->get_by_event_id($project_event->id);
                 foreach ($resources as $resource) {
                     if ($resource->role === 'Daily Worker') {
                         if ($resource->daily_wage > 0) {
                             $resource_class = '';
                             if ($resource->type === 'Team Lead' || $resource->type === 'Photographer') {
                                 $resource_class = 'Photo';
                             } else {
                                 if ($resource->type === 'Video Lead' || $resource->type === 'Videographer') {
                                     $resource_class = 'Video';
                                 }
                             }
                             $amount = $resource->daily_wage;
                             $event_deliverables = $this->deliverable->get_by_event_id($project_event->id);
                             foreach ($event_deliverables as $event_deliverable) {
                                 if ($event_deliverable->class === $resource_class && $event_deliverable->name === 'Photoshoot') {
                                     $amount += $resource->photoshoot;
                                 } else {
                                     if ($event_deliverable->class === $resource_class && $event_deliverable->name === 'Sehrabandi') {
                                         $amount += $resource->sehrabandi;
                                     } else {
                                         if ($event_deliverable->class === $resource_class && $event_deliverable->name === 'Post Rukhsati') {
                                             $amount += $resource->post_rukhsati;
                                         }
                                     }
                                 }
                             }
                             $cashflow_exists = FALSE;
                             foreach ($daily_salary_cashflows as &$daily_salary_cashflow) {
                                 if ($daily_salary_cashflow['date'] === date('Y-m-t', strtotime($project_event->date)) && $daily_salary_cashflow['project_id'] === $closed_project->id && $daily_salary_cashflow['user_id'] === $resource->id) {
                                     $daily_salary_cashflow['amount'] += $amount;
                                     $cashflow_exists = TRUE;
                                     break;
                                 }
                             }
                             if (!$cashflow_exists) {
                                 $daily_salary_cashflows[] = array('date' => date('Y-m-t', strtotime($project_event->date)), 'cashflow_type_id' => $daily_salary_id, 'project_id' => $closed_project->id, 'user_id' => $resource->id, 'amount' => $amount, 'bank_account_id' => $bank_account_id, 'log' => 'System created on ' . date('jS M, Y \\a\\t g:i a') . '.');
                             }
                         }
                     }
                 }
             }
             foreach ($daily_salary_cashflows as &$daily_salary_cashflow) {
                 $outflows += $daily_salary_cashflow['amount'];
                 $this->cashflow->insert($daily_salary_cashflow);
             }
         }
         if (!$has_albums) {
             $dbxClient = new \Dropbox\Client(getenv('DROPBOX_ACCESS_TOKEN'), "chaar-bhai/1.0");
             $albums_id = $this->cashflow_type->get_by('name', 'Albums')->id;
             $project_events = $this->event->get_events_for_admin_salary($closed_project->id);
             $album_cashflows = array();
             foreach ($project_events as $project_event) {
                 $event_deliverables = $this->deliverable->get_by_event_id($project_event->id);
                 $rank = '';
                 $events = $this->event->order_by('date', 'ASC')->get_many_by('project_id = "' . $project_event->project_id . '" AND event_type_id = "' . $project_event->event_type_id . '"');
                 if (count($events) > 1) {
                     $rank = 1;
                     foreach ($events as $event) {
                         if ($event->id === $project_event->id) {
                             break;
                         }
                         $rank++;
                     }
                     $rank = ' ' . $rank;
                 }
                 $layout_designing_price = 1500;
                 if (!empty($project_event->event_status)) {
                     if ($project_event->event_status === 'Album Ready') {
                         $amount = 0;
                         $album_deliverable = '';
                         foreach ($event_deliverables as $event_deliverable) {
                             if (strpos($event_deliverable->name, 'Album') !== FALSE && strpos($event_deliverable->name, 'Shoot') === FALSE && strpos($event_deliverable->name, 'Page') === FALSE) {
                                 $album_deliverable = $event_deliverable;
                                 break;
                             }
                         }
                         if (!empty($album_deliverable)) {
                             $album = $this->vendor_price->get_by(array('vendor_id' => $project_event->event_vendor_id, 'deliverable_type_id' => $album_deliverable->deliverable_type_id));
                             if (!empty($album)) {
                                 $event_folder = $project_event->event_type . $rank;
                                 $count_pages = count($dbxClient->getMetadataWithChildren('/' . $project_event->client_username . '/' . $project_event->project_name . '/' . $event_folder . '/layouts')['contents']);
                                 $amount = $layout_designing_price + $album->page_price * $count_pages * $album_deliverable->qty;
                             }
                             if ($amount > 0) {
                                 $cashflow_exists = FALSE;
                                 foreach ($album_cashflows as &$album_cashflow) {
                                     if ($album_cashflow['date'] === date('Y-m-t', strtotime($project_event->event_album_ready_date)) && $album_cashflow['project_id'] === $closed_project->id && $album_cashflow['user_id'] === $project_event->event_vendor_id) {
                                         $album_cashflow['amount'] += $amount;
                                         $cashflow_exists = TRUE;
                                         break;
                                     }
                                 }
                                 if (!$cashflow_exists) {
                                     $album_cashflows[] = array('date' => date('Y-m-t', strtotime($project_event->event_album_ready_date)), 'cashflow_type_id' => $albums_id, 'project_id' => $closed_project->id, 'user_id' => $project_event->event_vendor_id, 'amount' => $amount, 'bank_account_id' => $bank_account_id, 'log' => 'System created on ' . date('jS M, Y \\a\\t g:i a') . '.');
                                 }
                             }
                         }
                     }
                 }
                 if (!empty($project_event->photoshoot_status)) {
                     if ($project_event->photoshoot_status === 'Album Ready') {
                         $amount = 0;
                         $album_deliverable = '';
                         foreach ($event_deliverables as $event_deliverable) {
                             if (strpos($event_deliverable->name, 'Album') !== FALSE && strpos($event_deliverable->name, 'Shoot') !== FALSE) {
                                 $album_deliverable = $event_deliverable;
                                 break;
                             }
                         }
                         if (!empty($album_deliverable)) {
                             $album = $this->vendor_price->get_by(array('vendor_id' => $project_event->photoshoot_vendor_id, 'deliverable_type_id' => $album_deliverable->deliverable_type_id));
                             if (!empty($album)) {
                                 $event_folder = $project_event->event_type . $rank . ' Photoshoot';
                                 $count_pages = count($dbxClient->getMetadataWithChildren('/' . $project_event->client_username . '/' . $project_event->project_name . '/' . $event_folder . '/layouts')['contents']);
                                 $amount = $layout_designing_price + $album->page_price * $count_pages * $album_deliverable->qty;
                             }
                             if ($amount > 0) {
                                 $cashflow_exists = FALSE;
                                 foreach ($album_cashflows as &$album_cashflow) {
                                     if ($album_cashflow['date'] === date('Y-m-t', strtotime($project_event->photoshoot_album_ready_date)) && $album_cashflow['project_id'] === $closed_project->id && $album_cashflow['user_id'] === $project_event->photoshoot_vendor_id) {
                                         $album_cashflow['amount'] += $amount;
                                         $cashflow_exists = TRUE;
                                         break;
                                     }
                                 }
                                 if (!$cashflow_exists) {
                                     $album_cashflows[] = array('date' => date('Y-m-t', strtotime($project_event->photoshoot_album_ready_date)), 'cashflow_type_id' => $albums_id, 'project_id' => $closed_project->id, 'user_id' => $project_event->photoshoot_vendor_id, 'amount' => $amount, 'bank_account_id' => $bank_account_id, 'log' => 'System created on ' . date('jS M, Y \\a\\t g:i a') . '.');
                                 }
                             }
                         }
                     }
                 }
             }
             foreach ($album_cashflows as &$album_cashflow) {
                 $outflows += $album_cashflow['amount'];
                 $this->cashflow->insert($album_cashflow);
             }
         }
         foreach ($admins as $admin) {
             $admin_salary_cashflow = array('date' => date('Y-m-d', strtotime("last day of last month")), 'cashflow_type_id' => $admin_salary_id, 'user_id' => $admin->id, 'project_id' => $closed_project->id, 'amount' => round(0.45 * ($inflows - $outflows)), 'bank_account_id' => $bank_account_id, 'log' => 'System created on ' . date('jS M, Y \\a\\t g:i a') . '.');
             $where = 'cashflow_type_id = "' . $admin_salary_id . '"';
             $where .= ' AND project_id = "' . $admin_salary_cashflow['project_id'] . '"';
             $where .= ' AND user_id = "' . $admin_salary_cashflow['user_id'] . '"';
             $where .= ' AND date BETWEEN "' . date('Y-m-d', strtotime("first day of last month")) . '" AND "' . date('Y-m-d', strtotime("last day of last month")) . '"';
             $same_cashflows = $this->cashflow->get_many_by($where);
             if (empty($same_cashflows)) {
                 $this->cashflow->insert($admin_salary_cashflow);
             }
         }
     }
 }