/** * @param int $itemId */ private function removeItemFile($itemId) { $path = "/ginosi/uploads/expense/items_tmp/{$itemId}"; if (is_readable($path)) { \Library\Utility\Helper::deleteDirectory($path); } }
/** * Remove specific location * * @param int $id * @param int $locationType * @param int $detailsID * @return boolean */ function deleteLocation($id, $locationType, $detailsID) { $locationDao = $this->getLocationDaoByType($locationType); if ($locationDao !== null) { // remove directory Helper::deleteDirectory('/ginosi/images/locations/' . $detailsID); $locationDetailsDao = $this->getLocationDetailsDao(); $locationDetailsDao->deleteWhere(array('id' => $detailsID)); $locationDao->deleteWhere(array('id' => $id)); return true; } else { // unknown location type return false; } }
public function saveAction() { /** * @var BackofficeAuthenticationService $auth */ ini_set('max_execution_time', 0); $auth = $this->getServiceLocator()->get('library_backoffice_auth'); $config = $this->getServiceLocator()->get('config'); $asanaFeedbackConfig = $config['asana-api']['feedback']; $request = $this->getRequest(); $result = ['status' => 'error', 'msg' => TextConstants::ERROR]; if ($request->isPost() && $request->isXmlHttpRequest()) { $asana = new Asana(['apiKey' => $asanaFeedbackConfig['api_key']]); $prop = $request->getPost('prop'); $identity = $auth->getIdentity(); $followers = []; $notes = ''; $taskTitle = ''; $additionalParams = []; $selectedType = $request->getPost('selected-type'); switch ($selectedType) { case Feedback::FEEDBACK_TYPE_SOFTWARE_FEEDBACK_VALUE: $requestFeedbackType = $request->getPost('feedback-application-types'); $projectId = $asanaFeedbackConfig['project_id_development']; if ($requestFeedbackType == Feedback::FEEDBACK_APPLICATION_TYPE_CALL_CENTER) { $projectId = $asanaFeedbackConfig['project_id_hardware']; } $taskTitle = $request->getPost('feedback-title'); if (Feedback::FEEDBACK_APPLICATION_TYPE_MOBILE_APPLICATION == $request->getPost('feedback-application-types')) { $mobileApplication = $request->getPost('mobile-application-sub-type'); $projectId = $asanaFeedbackConfig['project_id_hardware']; $notes .= 'Mobile Application: ' . $mobileApplication . PHP_EOL; } elseif (Feedback::FEEDBACK_APPLICATION_TYPE_GOOGLE_INFRASTRUCTURES == $request->getPost('feedback-application-types')) { $projectId = $asanaFeedbackConfig['project_id_hardware']; $notes .= 'Google Infrastructure: ' . $requestFeedbackType . PHP_EOL; } elseif (Feedback::FEEDBACK_APPLICATION_TYPE_BACKOFFICE != $request->getPost('feedback-application-types')) { $notes .= 'Application: ' . $requestFeedbackType . PHP_EOL; } $notes .= $request->getPost('feedback-description'); break; case Feedback::FEEDBACK_TYPE_ACCOUNT_MANAGEMENT_VALUE: $projectId = $asanaFeedbackConfig['project_id_hardware']; switch ($request->getPost('feedback-account-management-type')) { case Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_CREATE_ACCOUNT_VALUE: $taskTitle = Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_CREATE_ACCOUNT_TEXT . ' - ' . $request->getPost('feedback-firstname') . ' ' . $request->getPost('feedback-lastname'); $notes .= 'Existing email address: ' . $request->getPost('feedback-existing-email-address') . PHP_EOL . 'Department: ' . $request->getPost('feedback-department') . PHP_EOL . 'Position and Title: ' . $request->getPost('feedback-position-and-title') . PHP_EOL . 'Location: ' . $request->getPost('feedback-location') . PHP_EOL . 'Personal information: ' . $request->getPost('feedback-personal-info', ' - ') . PHP_EOL; $additionalParams['due_on'] = date("Y-m-d", strtotime($request->getPost('feedback-duedate'))); break; case Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_REMOVE_ACCOUNT_VALUE: $taskTitle = Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_REMOVE_ACCOUNT_TEXT; $notes .= 'Accounts that need to be removed: ' . $request->getPost('feedback-account') . PHP_EOL . 'Account username / email: ' . $request->getPost('feedback-account-username') . PHP_EOL . 'Email where Google Drive files should be transferred to: ' . $request->getPost('feedback-google-drive-transfer-email') . PHP_EOL; $additionalParams['due_on'] = date("Y-m-d", strtotime($request->getPost('feedback-duedate'))); break; case Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_SUSPEND_ACCOUNT_VALUE: $taskTitle = Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_SUSPEND_ACCOUNT_TEXT; $notes .= 'Accounts that need to be suspended: ' . $request->getPost('feedback-account') . PHP_EOL . 'Account username / email: ' . $request->getPost('feedback-account-username') . PHP_EOL; $additionalParams['due_on'] = date("Y-m-d", strtotime($request->getPost('feedback-duedate'))); break; case Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_UNSUSPEND_ACCOUNT_VALUE: $taskTitle = Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_UNSUSPEND_ACCOUNT_TEXT; $notes .= 'Accounts that need to be unsuspended: ' . $request->getPost('feedback-account') . PHP_EOL . 'Account username / email: ' . $request->getPost('feedback-account-username') . PHP_EOL; $additionalParams['due_on'] = date("Y-m-d", strtotime($request->getPost('feedback-duedate'))); break; case Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_MAILING_LISTS_VALUE: if (Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_ADD_USER_TO_MAILING_LISTS_VALUE == $request->getPost('feedback-mailing-list-action', Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_ADD_USER_TO_MAILING_LISTS_VALUE)) { $taskTitle = Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_ADD_USER_TO_MAILING_LISTS_TEXT; } else { $taskTitle = Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_REMOVE_USER_FROM_MAILING_LISTS_TEXT; } $notes .= 'Account username / email: ' . $request->getPost('feedback-account-username') . PHP_EOL . 'Mailing List: ' . $request->getPost('feedback-mailing-list') . PHP_EOL; break; case Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_CALL_CENTER_VALUE: $taskTitle = 'Add Call Center Account // ' . $request->getPost('feedback-full-name'); $notes .= 'Department: ' . $request->getPost('feedback-department') . PHP_EOL . 'Account full name: ' . $request->getPost('feedback-full-name') . PHP_EOL . 'Reason: ' . $request->getPost('feedback-reason') . PHP_EOL; break; } break; case Feedback::FEEDBACK_TYPE_TRAINING_REQUEST_VALUE: $projectId = $asanaFeedbackConfig['project_id_development']; $taskTitle = $request->getPost('feedback-title'); $notes .= $request->getPost('feedback-description'); break; case Feedback::FEEDBACK_TYPE_ELECTRONICS_REQUEST_VALUE: $projectId = $asanaFeedbackConfig['project_id_hardware']; $taskTitle = Feedback::FEEDBACK_TYPE_ELECTRONICS_REQUEST_TEXT; $notes .= 'Location: ' . $request->getPost('feedback-location') . PHP_EOL . 'Reason: ' . $request->getPost('feedback-reason') . PHP_EOL; break; case Feedback::FEEDBACK_TYPE_MARKETING_IDEA_VALUE: $projectId = $asanaFeedbackConfig['project_id_marketing']; $taskTitle = $request->getPost('feedback-title'); $notes .= $request->getPost('feedback-description'); break; case Feedback::FEEDBACK_TYPE_CONTENT_IDEA_VALUE: $projectId = $asanaFeedbackConfig['project_id_content']; $taskTitle = $request->getPost('feedback-title'); $notes .= $request->getPost('feedback-description'); break; } $notBOInfo = ''; if (Feedback::FEEDBACK_APPLICATION_TYPE_BACKOFFICE == $request->getPost('feedback-application-types')) { $notBOInfo = "\nScreen Size: {$prop['screen_size']}\nURL: {$prop['url']}"; } $notes .= PHP_EOL . "\n--------------------------------------------------------------\nSystem Parameters\n{$notBOInfo}\nUser: {$identity->firstname} {$identity->lastname} (#{$identity->id})\nEmail: {$identity->email}\nTimezone: {$identity->timezone}\n--------------------------------------------------------------"; if ($identity->asana_id) { array_push($followers, $identity->asana_id); } $resultAsana = $asana->createTask(array_merge(['workspace' => $asanaFeedbackConfig['workspace_id'], 'name' => $taskTitle, 'notes' => $notes, 'projects' => [$projectId], 'followers' => $followers]), $additionalParams); if (!in_array($asana->responseCode, ['200', '201']) || is_null($resultAsana)) { $result['msg'] = "Error while trying to connect to Asana, response code: {$asana->responseCode}"; } else { $resultJson = json_decode($resultAsana); $taskId = $resultJson->data->id; // attaching attachments to the task $targetPath = $this->getAttachmentsDirectory() . '/' . (int) $request->getPost('key'); if (is_readable($targetPath)) { $files = glob($targetPath . '/*'); if (count($files)) { foreach ($files as $file) { $asana->addAttachmentToTask($taskId, ['file' => $file]); if (in_array($asana->responseCode, ['200', '201'])) { unlink($file); } } } Helper::deleteDirectory($targetPath); } //doing post task create actions for specific types (subtasks, tags) switch ($selectedType) { case Feedback::FEEDBACK_TYPE_SOFTWARE_FEEDBACK_VALUE: if ((int) $request->getPost('feedback-is-bug') == 1) { //add bug tag $asana->addTagToTask($taskId, $asanaFeedbackConfig['bug_tag_id']); } break; case Feedback::FEEDBACK_TYPE_ACCOUNT_MANAGEMENT_VALUE: $logger = $this->getServiceLocator()->get('ActionLogger'); switch ($request->getPost('feedback-account-management-type')) { case Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_CREATE_ACCOUNT_VALUE: //add subtasks if ((int) $request->getPost('feedback-subscribe-google-groups') == 1) { $asana->createSubTask($taskId, ['name' => 'Subscribe to department mailing list']); } if (strlen($request->getPost('feedback-other-account')) > 1) { $feedbackOtherAccount = trim($request->getPost('feedback-other-account')); if (sizeof(explode(',', $feedbackOtherAccount)) > 1) { $separator = ' accounts'; } else { $separator = ' account'; } $asana->createSubTask($taskId, ['name' => 'Create ' . $feedbackOtherAccount . $separator]); } if ((int) $request->getPost('feedback-lastpass-account') == 1) { $asana->createSubTask($taskId, ['name' => 'Create LastPass account']); } if ((int) $request->getPost('feedback-bo-account') == 1) { $asana->createSubTask($taskId, ['name' => 'Create BO account']); } if ((int) $request->getPost('feedback-google-account') == 1) { $asana->createSubTask($taskId, ['name' => 'Create Google account']); } if ((int) $request->getPost('computer-setup') == 1) { $asana->createSubTask($taskId, ['name' => 'Setup computer']); } //log into backoffice $msg = 'Requested to create an account for <b>' . $request->getPost('feedback-firstname') . ' ' . $request->getPost('feedback-lastname') . '</b>'; $logger->save(Logger::MODULE_USER, $identity->id, Logger::ACTION_HR_ACCOUNT_MANAGEMENT, $msg); break; case Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_REMOVE_ACCOUNT_VALUE: //log into backoffice $msg = 'Requested to remove <b>' . $request->getPost('feedback-account') . '</b> accounts for <b>' . $request->getPost('feedback-account-username') . '</b>'; $logger->save(Logger::MODULE_USER, $identity->id, Logger::ACTION_HR_ACCOUNT_MANAGEMENT, $msg); break; case Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_SUSPEND_ACCOUNT_VALUE: //log into backoffice $msg = 'Requested to suspend <b>' . $request->getPost('feedback-account') . '</b> accounts for <b>' . $request->getPost('feedback-account-username') . '</b>'; $logger->save(Logger::MODULE_USER, $identity->id, Logger::ACTION_HR_ACCOUNT_MANAGEMENT, $msg); break; case Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_UNSUSPEND_ACCOUNT_VALUE: //log into backoffice $msg = 'Requested to suspend <b>' . $request->getPost('feedback-account') . '</b> accounts for <b>' . $request->getPost('feedback-account-username') . '</b>'; $logger->save(Logger::MODULE_USER, $identity->id, Logger::ACTION_HR_ACCOUNT_MANAGEMENT, $msg); break; case Feedback::FEEDBACK_SUBTYPE_ACCOUNT_MANAGEMENT_ADD_USER_TO_MAILING_LISTS_VALUE: //log into backoffice $msg = 'Requested to add <b>' . $request->getPost('feedback-account-username') . '</b> to <b>' . $request->getPost('feedback-mailing-list') . '</b> Mailing list'; $logger->save(Logger::MODULE_USER, $identity->id, Logger::ACTION_HR_ACCOUNT_MANAGEMENT, $msg); break; } break; case Feedback::FEEDBACK_TYPE_TRAINING_REQUEST_VALUE: $asana->addTagToTask($taskId, $asanaFeedbackConfig['training_tag_id']); break; case Feedback::FEEDBACK_TYPE_ELECTRONICS_REQUEST_VALUE: break; case Feedback::FEEDBACK_TYPE_MARKETING_IDEA_VALUE: break; case Feedback::FEEDBACK_TYPE_CONTENT_IDEA_VALUE: break; } $result = ['status' => 'success', 'msg' => TextConstants::SUCCESS_ADD, 'data' => ['asana_user' => count($followers) ? true : false, 'workspace_id' => $asanaFeedbackConfig['workspace_id'], 'project_id' => $projectId, 'task_id' => $taskId, 'url' => "https://app.asana.com/0/{$projectId}/{$taskId}"]]; } } else { $result['msg'] = TextConstants::ERROR_BAD_REQUEST; } return new JsonModel($result); }
function deleteBlog($id) { Helper::deleteDirectory(DirectoryStructure::FS_GINOSI_ROOT . DirectoryStructure::FS_IMAGES_ROOT . DirectoryStructure::FS_IMAGES_BLOG_PATH . $id); $blogDao = $this->getBlogDao(); $blogDao->deleteWhere(array('id' => $id)); return true; }