/** * Clean the value based on the scrubbers specified * * @param string|array $dirty * @return string|array */ public function scrub($dirty) { $current = array_merge($this->pre, $this->scrubbers, $this->post); $sanitizer = new Sanitizer($current, $this->registered); return $sanitizer->sanitize($dirty); }
function insertFeedback() { $this->load->library('Sanitizer'); $call = $this->uri->segment('3'); $company = $this->uri->segment('4'); $employee = $this->uri->segment('5'); $PreFeedback = $this->input->post('feedback'); $SanFeed = new Sanitizer($string); $feedback = $SanFeed->sanitize($PreFeedback); //date $date = date('Y-m-d H:i:s', now()); $this->db->select('*'); $this->db->from('ecc_feedback_feed'); $this->db->where('idcall_feed', $call); $getFeedbacks = $this->db->get(); if ($this->id == $employee) { $updateStatus = array('callStatus_call' => 'done', 'inDate_call' => date('Y-m-d H:i:s', now())); $this->db->where('id_call', $call); $this->db->update('ecc_calls_call', $updateStatus); //select employee of the department $this->db->select('*'); $this->db->from('ecc_department_dep'); $this->db->where('name_dep', $this->department); $getDep = $this->db->get(); foreach ($getDep->result() as $depRow) { $this->db->select('*'); $this->db->from('ecc_managers_man'); $this->db->where('iddep_man', $depRow->id_dep); $getMan = $this->db->get(); foreach ($getMan->result() as $manRow) { $manId = $manRow->idemp_man; //get employee $this->db->SELECT('*'); $this->db->FROM('ecc_employee_empmeta'); $this->db->WHERE('idemp_empmeta', $manId); $meta = $this->db->GET(); $thisMeta = array(); foreach ($meta->result() as $row2) { $thisMeta[$row2->metaKey_empmeta] = $row2->metaValue_empmeta; } //meta $MetaEmp = array('first_name' => $thisMeta['first_name'], 'last_name' => $thisMeta['last_name'], 'position' => $thisMeta['position'], 'avatar' => $thisMeta['avatar'], 'mobile' => $thisMeta['mobile']); $EmpName = $MetaEmp['first_name'] . " " . $MetaEmp['last_name']; //getCompany $this->db->select('*'); $this->db->from('ecc_company_co'); $this->db->where('id_co', $company); $getCoName = $this->db->get(); foreach ($getCoName->result() as $rowCo) { $companyName = $rowCo->name_co; } $push = array('objectid_push' => $call, 'affectedEmp_push' => $manId, 'creatorEmp_push' => $this->id, 'affectedNameSpace_push' => $EmpName, 'creatorNameSpace_push' => $this->name, 'type_push' => 'calls', 'name_push' => '<b>' . $this->name . '</b> just added feedback to <b>' . $companyName . '</b> call', 'date_push' => date('Y-m-d H:i:s', now()), 'status_push' => '1'); $this->db->insert('ecc_pusher_push', $push); //push notifications $this->db->select('*'); $this->db->from('ecc_pusher_push'); $this->db->where('status_push', '1'); $this->db->where('affectedEmp_push', $employee); $getCount = $this->db->get(); $PushNotification = array('count' => $getCount->num_rows(), 'name' => '<b>' . $this->name . '</b> just added feedback to <b>' . $companyName . '</b> call'); $this->load->library('pusher'); $this->pusher->trigger('notifications-' . $manId, 'notifications', $PushNotification); } } } else { //getCompany $this->db->select('*'); $this->db->from('ecc_company_co'); $this->db->where('id_co', $company); $getCoName = $this->db->get(); foreach ($getCoName->result() as $rowCo) { $companyName = $rowCo->name_co; } //get employee $this->db->SELECT('*'); $this->db->FROM('ecc_employee_empmeta'); $this->db->WHERE('idemp_empmeta', $employee); $meta = $this->db->GET(); $thisMeta = array(); foreach ($meta->result() as $row2) { $thisMeta[$row2->metaKey_empmeta] = $row2->metaValue_empmeta; } //meta $MetaEmp = array('first_name' => $thisMeta['first_name'], 'last_name' => $thisMeta['last_name'], 'position' => $thisMeta['position'], 'avatar' => $thisMeta['avatar'], 'mobile' => $thisMeta['mobile']); $EmpName = $MetaEmp['first_name'] . " " . $MetaEmp['last_name']; $push = array('objectid_push' => $call, 'affectedEmp_push' => $employee, 'creatorEmp_push' => $this->id, 'affectedNameSpace_push' => $EmpName, 'creatorNameSpace_push' => $this->name, 'type_push' => 'calls', 'name_push' => '<b>' . $this->name . '</b> just added feedback to <b>' . $companyName . '</b> call', 'date_push' => date('Y-m-d H:i:s', now()), 'status_push' => '1'); $this->db->insert('ecc_pusher_push', $push); //push notifications $this->db->select('*'); $this->db->from('ecc_pusher_push'); $this->db->where('status_push', '1'); $this->db->where('affectedEmp_push', $employee); $getCount = $this->db->get(); $PushNotification = array('count' => $getCount->num_rows(), 'name' => '<b>' . $this->name . '</b> just added feedback to <b>' . $companyName . '</b> call'); $this->load->library('pusher'); $this->pusher->trigger('notifications-' . $empRow->id_emp, 'notifications', $PushNotification); } $insertFeedback = array('idcall_feed' => $call, 'idemp_feed' => $this->id, 'idco_feed' => $company, 'feedback_feed' => $feedback, 'date_feed' => $date); $this->db->insert('ecc_feedback_feed', $insertFeedback); }
/** * Parses the url, and dispatches to the appropriate controller. * @param bool $skipControllerInitialization */ public function dispatch($skipControllerInitialization = false) { Profile::start('Dispatcher', 'Dispatching'); $contentTypes = array(); try { $controllerName = isset($_GET['controller']) ? trim($_GET['controller']) : $this->defaultControllerName; $controllerName = $this->controllerFromUrlSanitizer->sanitize($controllerName); $invalidControllerName = false; try { $controller = $this->controllerFactory->get($controllerName); } catch (ControllerFactoryException $e) { // Not failing just yet, so the model gets initialized. $invalidControllerName = true; $controller = $this->controllerFactory->get($this->defaultControllerName); } $model = new Model(); $controller->setModel($model); $controller->initModel(); $contentTypes = $this->getAcceptContentTypes($_SERVER['HTTP_ACCEPT']); try { if ($invalidControllerName) { ErrorCode::notFound(); } try { $errorDuringRender = null; $errorCode = null; // Try to dispatch to the actual action. $actionParameters = explode('/', isset($_GET['action']) ? $_GET['action'] : 'index'); $action = $actionParameters[0]; array_shift($actionParameters); if ($action[0] === '_') { throw new ErrorCode(ErrorCode::NOT_FOUND, 'Tried to access action with underscore.'); } $action = $this->actionFromUrlSanitizer->sanitize($action); try { // Check if the action is valid $reflectionClass = new ReflectionClass($controller); $actionMethod = $reflectionClass->getMethod($action); if ($action !== 'index' && (method_exists('Controller', $action) || !$actionMethod->isPublic() || $actionMethod->class !== get_class($controller))) { throw new DispatcherException(); } } catch (Exception $e) { throw new ErrorCode(ErrorCode::NOT_FOUND, 'Tried to access invalid action.'); } $controller->setAction($action); $parameters = array(); $stringParameters = array(); $i = 0; foreach ($actionMethod->getParameters() as $parameter) { $actionParameter = isset($actionParameters[$i]) ? $actionParameters[$i] : null; if ($actionParameter === null) { if (!$parameter->isDefaultValueAvailable()) { throw new ErrorCode(ErrorCode::BAD_REQUEST, 'Not all parameters supplied.'); } // Well: there is no more additional query, and apparently the rest of the parameters are optional, so continue. continue; } if (($parameterTypeClass = $parameter->getClass()) != false) { if (!$parameterTypeClass->isSubclassOf('RW_Type')) { throw new ErrorCode(ErrorCode::BAD_REQUEST, 'Invalid parameter type.'); } $parameterTypeClassName = $parameterTypeClass->getName(); $parameters[] = new $parameterTypeClassName($actionParameter); } else { $parameters[] = $actionParameter; } $stringParameters[] = $actionParameter; $i++; } $controller->setActionParameters($stringParameters); if (!$skipControllerInitialization) { $controller->initialize(); } // This actually calls the apropriate action. call_user_func_array(array($controller, $action), $parameters); $controller->extendModel(); try { $this->renderers->render($controller->getViewName(), $model, $this->notificationCenter, $this->theme->getTemplatesPath(), $contentTypes, $controller); } catch (Exception $e) { throw new ErrorCode(ErrorCode::INTERNAL_SERVER_ERROR, 'Error during render: ' . $e->getMessage()); } } catch (ErrorMessageException $e) { $errorDuringRender = true; $this->notificationCenter->addError($e->getMessage()); } catch (ErrorCode $e) { throw $e; } catch (Exception $e) { $additionalInfo = array(); $additionalInfo['controllerName'] = $controllerName; if (isset($action)) { $additionalInfo['action'] = $action; } $additionalInfo['exceptionThrown'] = get_class($e); $additionalInfo['error'] = $e->getMessage(); Log::warning($e->getMessage(), 'Dispatcher', $additionalInfo); throw new ErrorCode(ErrorCode::INTERNAL_SERVER_ERROR); } } catch (ErrorCode $e) { // All other exceptions have already been caught. $errorDuringRender = true; $errorCode = $e->getCode(); $e->writeHttpHeader(); if ($e->getMessage()) { Log::debug($e->getMessage(), 'Dispatcher'); } } if ($errorDuringRender) { $this->renderers->renderError($errorCode, $model, $this->notificationCenter, $this->theme->getTemplatesPath(), $contentTypes); } } catch (Exception $e) { try { Log::fatal('There has been a fatal error dispatching.', 'Dispatcher', array('error' => $e->getMessage())); $this->renderers->renderFatalError($this->notificationCenter, $this->theme->getTemplatesPath(), $contentTypes); } catch (Exception $e) { die('<h1 class="error">Fatal error...</h1>'); } } Profile::stop(); }