コード例 #1
0
ファイル: actions.class.php プロジェクト: huqa/trevents
 protected function processForm(sfWebRequest $request, sfForm $form)
 {
     //var_dump($request->getParameter('event[start_time]'));
     $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
     if ($form->isValid()) {
         //$event = $form->save();
         $name = $form->getValue('name');
         $venue = $form->getValue('venue');
         $description = $form->getValue('description');
         $price = $form->getValue('price');
         $c_ids = $form->getValue('category_ids');
         $event_url = $form->getValue('event_url');
         $start_time = $form->getValue('start_time');
         $end_time = $form->getValue('end_time');
         $date = $form->getValue('date');
         $o_id = $form->getValue('organizer_id');
         $event = null;
         if (!$form->getObject()->isNew()) {
             $event = $form->getObject();
             //Delete previous relations to genres
             Doctrine_Core::getTable('EventCategory')->createQuery()->delete()->where('event_id = ?', $event->getId())->execute();
         } else {
             $event = new Event();
         }
         if ($event === null) {
             $event = new Event();
         }
         //$event = new Event();
         //$event->setCategoryId($c_id);
         $event->setName($name);
         $event->setDescription($description);
         $event->setPrice($price);
         $event->setVenue($venue);
         $event->setEventUrl($event_url);
         $event->setStartTime($start_time);
         $event->setEndTime($end_time);
         $event->setOrganizerId($o_id);
         $sql_date = date("Y-m-d", strtotime($date));
         $event->setDate($sql_date);
         $event->save();
         foreach ($c_ids as $cid) {
             $ec = new EventCategory();
             $ec->setEventId($event->getId());
             $ec->setCategoryId($cid);
             $ec->save();
         }
         $this->getUser()->setAttribute('m', 1);
         $this->redirect('organize/edit?id=' . $event->getId() . '&m=1');
     }
 }
コード例 #2
0
ファイル: actions.class.php プロジェクト: Gula/magic
 protected function processForm(sfWebRequest $request, sfForm $form)
 {
     $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
     if ($form->isValid()) {
         $notice = $form->getObject()->isNew() ? 'The item was created successfully.' : 'The item was updated successfully.';
         try {
             $event = $form->save();
         } catch (Doctrine_Validator_Exception $e) {
             $errorStack = $form->getObject()->getErrorStack();
             $message = get_class($form->getObject()) . ' has ' . count($errorStack) . " field" . (count($errorStack) > 1 ? 's' : null) . " with validation errors: ";
             foreach ($errorStack as $field => $errors) {
                 $message .= "{$field} (" . implode(", ", $errors) . "), ";
             }
             $message = trim($message, ', ');
             $this->getUser()->setFlash('error', $message);
             return sfView::SUCCESS;
         }
         $this->dispatcher->notify(new sfEvent($this, 'admin.save_object', array('object' => $event)));
         if ($request->hasParameter('_save_and_add')) {
             $this->getUser()->setFlash('notice', $notice . ' You can add another one below.');
             $this->redirect('@event_new');
         } else {
             $this->getUser()->setFlash('notice', $notice);
             $params = $request->getParameter('event');
             if (isset($params['main_slideshow'])) {
                 $objEvCat = EventCategoryTable::ExistByEventAndCat($event->get('id'), 2);
                 if (is_null($objEvCat)) {
                     $obj = new EventCategory();
                     $obj->setCategoryId(2);
                     $obj->setEventId($event->get('id'));
                     $obj->save();
                 }
             } else {
                 $objEvCat = EventCategoryTable::ExistByEventAndCat($event->get('id'), 2);
                 if (!is_null($objEvCat)) {
                     $objEvCat->delete();
                 }
             }
             if ($params['event_cat'] != '') {
                 $obj = new EventCategory();
                 $obj->setCategoryId($params['event_cat']);
                 $obj->setEventId($event->get('id'));
                 $obj->save();
             }
             $this->redirect('events/index');
         }
     } else {
         $this->getUser()->setFlash('error', 'The item has not been saved due to some errors.', false);
     }
 }
コード例 #3
0
 public static function signatures2db($xml_file, $customer_id)
 {
     // Create XML DOM document and load XML file.
     $xml = new DOMDocument();
     $xml->load($xml_file);
     // Start by parsing all log signatures.
     $xml_logs = $xml->getElementsByTagName('log_signature');
     // Parse all log signatures.
     foreach ($xml_logs as $xml_log) {
         // Use existing object from db if community_id exists, else create an new.
         $community_ids = $xml_log->getElementsByTagName('community_id');
         $community_id = $community_ids->item(0)->nodeValue;
         if ($community_id != '') {
             // Load the XML data into memory.
             // Event details
             $publisher_ids = $xml_log->getElementsByTagName('publisher');
             $publisher_id = $publisher_ids->item(0)->nodeValue;
             $names = $xml_log->getElementsByTagName('name');
             $name = self::xml_entity_decode($names->item(0)->nodeValue);
             $source_names = $xml_log->getElementsByTagName('source_name');
             $source_name = self::xml_entity_decode($source_names->item(0)->nodeValue);
             $source_type_ids = $xml_log->getElementsByTagName('source_type_id');
             $source_type_id = $source_type_ids->item(0)->nodeValue;
             $category_names = $xml_log->getElementsByTagName('category_name');
             $category_name = self::xml_entity_decode($category_names->item(0)->nodeValue);
             $category_group_ids = $xml_log->getElementsByTagName('category_group_id');
             $category_group_id = $category_group_ids->item(0)->nodeValue;
             $confidentiality_ids = $xml_log->getElementsByTagName('confidentiality_id');
             $confidentiality_id = $confidentiality_ids->item(0)->nodeValue;
             $integrity_ids = $xml_log->getElementsByTagName('integrity_id');
             $integrity_id = $integrity_ids->item(0)->nodeValue;
             $availability_ids = $xml_log->getElementsByTagName('availability_id');
             $availability_id = $availability_ids->item(0)->nodeValue;
             $comments = $xml_log->getElementsByTagName('comment');
             $comment = self::xml_entity_decode($comments->item(0)->nodeValue);
             $xrefs = $xml_log->getElementsByTagName('xref');
             $xref = self::xml_entity_decode($xrefs->item(0)->nodeValue);
             // Log Signature details
             $patterns = $xml_log->getElementsByTagName('pattern');
             if ($patterns->item(0)) {
                 $pattern = self::xml_entity_decode($patterns->item(0)->nodeValue);
             } else {
                 $pattern = '';
             }
             $reporting_ips = $xml_log->getElementsByTagName('reporting_ip');
             if ($reporting_ips->item(0)) {
                 $reporting_ip = self::xml_entity_decode($reporting_ips->item(0)->nodeValue);
             } else {
                 $reporting_ip = '';
             }
             $attacking_ips = $xml_log->getElementsByTagName('attacking_ip');
             if ($attacking_ips->item(0)) {
                 $attacking_ip = self::xml_entity_decode($attacking_ips->item(0)->nodeValue);
             } else {
                 $attacking_ip = '';
             }
             $services = $xml_log->getElementsByTagName('service');
             if ($services->item(0)) {
                 $service = self::xml_entity_decode($services->item(0)->nodeValue);
             } else {
                 $service = '';
             }
             $usernames = $xml_log->getElementsByTagName('username');
             if ($usernames->item(0)) {
                 $username = self::xml_entity_decode($usernames->item(0)->nodeValue);
             } else {
                 $username = '';
             }
             $messages = $xml_log->getElementsByTagName('message');
             if ($messages->item(0)) {
                 $message = self::xml_entity_decode($messages->item(0)->nodeValue);
             } else {
                 $message = '';
             }
             $log_samples = $xml_log->getElementsByTagName('log_sample');
             if ($log_samples->item(0)) {
                 $xml_log_sample = self::xml_entity_decode($log_samples->item(0)->nodeValue);
             } else {
                 $xml_log_sample = '';
             }
             // Skip to next signature, if signature isnt complete.
             if (strlen($pattern) < 1 or strlen($name) < 1 or strlen($source_name) < 1) {
                 continue;
             }
             // Select the Event with the found CommunityId.
             $c = new Criteria();
             $c->add(EventInfoPeer::ID, $community_id);
             $event = EventInfoPeer::doSelectOne($c);
             // If no match, create a new object.
             if (!$event) {
                 $event = new EventInfo();
                 // We want to assign an id.
                 $event->setName('');
                 $event->save();
             }
             $event->setCustomerId($customer_id);
             $event->setApprovedForShare(false);
             // Select the Log Signature corresponding to the event.
             $c = new Criteria();
             $c->add(LogSignaturePeer::EVENT_INFO_ID, $event->getId());
             $log = LogSignaturePeer::doSelectOne($c);
             // If no match, create a new object.
             if (!$log) {
                 $log = new LogSignature();
                 // We want to assign an id.
                 $log->setMPattern('');
                 $log->save();
             }
             // Select the Log Sample corresponding to the log signature.
             $c = new Criteria();
             $c->add(LogSamplePeer::ID, $log->getLogSampleId());
             $log_sample = LogSignaturePeer::doSelectOne($c);
             // If no match, create a new object.
             if (!$log_sample) {
                 $log_sample = new LogSample();
             }
             // Save event details.
             $event->setVendorId(0);
             $event->setPublisherId($publisher_id);
             $event->setName($name);
             $event->setConfidentialityId($confidentiality_id);
             $event->setIntegrityId($integrity_id);
             $event->setAvailabilityId($availability_id);
             $event->setComment($comment);
             $event->setXref($xref);
             // Find the source name, else create it.
             if ($source_name) {
                 $c = new Criteria();
                 $c->add(EventSourceNamePeer::NAME, $source_name);
                 $db_source_name = EventSourceNamePeer::doSelectOne($c);
                 if (!$db_source_name) {
                     $db_source_name = new EventSourceName();
                     $db_source_name->setName($source_name);
                     $db_source_name->setSourceTypeId($source_type_id);
                     $db_source_name->save();
                 }
                 $event->setSourceNameId($db_source_name->getId());
             }
             // Find the event category, else create it.
             if ($category_name) {
                 $c = new Criteria();
                 $c->add(EventCategoryPeer::NAME, $category_name);
                 $db_event_category = EventCategoryPeer::doSelectOne($c);
                 if (!$db_event_category) {
                     $db_event_category = new EventCategory();
                     $db_event_category->setName($category_name);
                     $db_event_category->setPublisherId($publisher_id);
                     $db_event_category->setGroupId($category_group_id);
                     $db_event_category->save();
                 }
                 $event->setCategoryId($db_event_category->getId());
             }
             $event->save();
             // Save the log sample.
             // $log_sample->setMessage($xml_log_sample);
             $log_sample->save();
             // Save log signature details.
             $log->setEventInfoId($event->getId());
             $log->setMPattern($pattern);
             $log->setAttackingIp($attacking_ip);
             $log->setService($service);
             $log->setUsername($username);
             $log->setDataField($message);
             $log->setLogSampleId($log_sample->getId());
             $log->save();
             //print "Updating (LOG) signature ".$event->getId()." source_name: $source_name\n";
         }
         // Cleanup scope.
         $db_source_name = '';
         $db_event_category = '';
         $publisher_id = '';
         $name = '';
         $source_name = '';
         $source_names = '';
         $category_name = '';
         $confidentiality_id = '';
         $availability_id = '';
         $integrity_id = '';
         $comment = '';
         $xref = '';
         unset($event);
         unset($log);
         unset($log_sample);
     }
     // Start by parsing all log firewall signatures.
     $xml_logs = $xml->getElementsByTagName('log_fw_signature');
     // Parse all log signatures.
     foreach ($xml_logs as $xml_log) {
         // Use existing object from db if community_id exists, else create an new.
         $community_ids = $xml_log->getElementsByTagName('community_id');
         $community_id = $community_ids->item(0)->nodeValue;
         if ($community_id != '') {
             // Load the XML data into memory.
             // Event details
             $publisher_ids = $xml_log->getElementsByTagName('publisher');
             $publisher_id = $publisher_ids->item(0)->nodeValue;
             $names = $xml_log->getElementsByTagName('name');
             $name = self::xml_entity_decode($names->item(0)->nodeValue);
             $source_names = $xml_log->getElementsByTagName('source_name');
             $source_name = self::xml_entity_decode($source_names->item(0)->nodeValue);
             $source_type_ids = $xml_log->getElementsByTagName('source_type_id');
             $source_type_id = $source_type_ids->item(0)->nodeValue;
             $comments = $xml_log->getElementsByTagName('comment');
             $comment = self::xml_entity_decode($comments->item(0)->nodeValue);
             $xrefs = $xml_log->getElementsByTagName('xref');
             $xref = self::xml_entity_decode($xrefs->item(0)->nodeValue);
             // Log Signature details
             $patterns = $xml_log->getElementsByTagName('pattern');
             if ($patterns->item(0)) {
                 $pattern = self::xml_entity_decode($patterns->item(0)->nodeValue);
             } else {
                 $pattern = '';
             }
             $fw_policies = $xml_log->getElementsByTagName('fw_policy');
             if ($fw_policies->item(0)) {
                 $fw_policy = $fw_policies->item(0)->nodeValue;
             } else {
                 $fw_policy = '';
             }
             $fw_interfaces = $xml_log->getElementsByTagName('fw_interface');
             if ($fw_interfaces->item(0)) {
                 $fw_interface = self::xml_entity_decode($fw_interfaces->item(0)->nodeValue);
             } else {
                 $fw_interface = '';
             }
             $fw_source_ips = $xml_log->getElementsByTagName('fw_source_ip');
             if ($fw_source_ips->item(0)) {
                 $fw_source_ip = self::xml_entity_decode($fw_source_ips->item(0)->nodeValue);
             } else {
                 $fw_source_ip = '';
             }
             $fw_destination_ips = $xml_log->getElementsByTagName('fw_destination_ip');
             if ($fw_destination_ips->item(0)) {
                 $fw_destination_ip = self::xml_entity_decode($fw_destination_ips->item(0)->nodeValue);
             } else {
                 $fw_destination_ip = '';
             }
             $fw_destination_ports = $xml_log->getElementsByTagName('fw_destination_port');
             if ($fw_destination_ports->item(0)) {
                 $fw_destination_port = self::xml_entity_decode($fw_destination_ports->item(0)->nodeValue);
             } else {
                 $fw_destination_port = '';
             }
             $fw_ip_protocols = $xml_log->getElementsByTagName('fw_ip_protocol');
             if ($fw_ip_protocols->item(0)) {
                 $fw_ip_protocol = self::xml_entity_decode($fw_ip_protocols->item(0)->nodeValue);
             } else {
                 $fw_ip_protocol = '';
             }
             $log_samples = $xml_log->getElementsByTagName('log_sample');
             if ($log_samples->item(0)) {
                 $xml_log_sample = self::xml_entity_decode($log_samples->item(0)->nodeValue);
             } else {
                 $xml_log_sample = '';
             }
             // Skip to next signature, if signature isnt complete.
             if (strlen($pattern) < 1 or strlen($name) < 1 or strlen($source_name) < 1) {
                 continue;
             }
             // Select the Event with the found CommunityId.
             $c = new Criteria();
             $c->add(EventInfoPeer::ID, $community_id);
             $event = EventInfoPeer::doSelectOne($c);
             // If no match, create a new object.
             if (!$event) {
                 $event = new EventInfo();
                 // We want to assign an id.
                 $event->setName('');
                 $event->save();
             }
             $event->setCustomerId($customer_id);
             $event->setApprovedForShare(false);
             // Select the Log Firewall Signature corresponding to the event.
             $c = new Criteria();
             $c->add(LogFirewallSignaturePeer::EVENT_INFO_ID, $event->getId());
             $log = LogFirewallSignaturePeer::doSelectOne($c);
             // If no match, create a new object.
             if (!$log) {
                 $log = new LogFirewallSignature();
                 // We want to assign an id.
                 $log->setMPattern('');
                 $log->save();
             }
             // Select the Log Sample corresponding to the log signature.
             $c = new Criteria();
             $c->add(LogSamplePeer::ID, $log->getLogSampleId());
             $log_sample = LogSignaturePeer::doSelectOne($c);
             // If no match, create a new object.
             if (!$log_sample) {
                 $log_sample = new LogSample();
             }
             // Save event details.
             // Save event details.
             $event->setVendorId(0);
             $event->setPublisherId($publisher_id);
             $event->setName($name);
             $event->setComment($comment);
             $event->setXref($xref);
             // Find the source name, else create it.
             if ($source_name) {
                 $c = new Criteria();
                 $c->add(EventSourceNamePeer::NAME, $source_name);
                 $db_source_name = EventSourceNamePeer::doSelectOne($c);
                 if (!$db_source_name) {
                     $db_source_name = new EventSourceName();
                     $db_source_name->setName($source_name);
                     $db_source_name->setSourceTypeId($source_type_id);
                     $db_source_name->save();
                 }
                 $event->setSourceNameId($db_source_name->getId());
             }
             $event->save();
             // Save the log sample.
             // $log_sample->setMessage($xml_log_sample);
             $log_sample->save();
             // Save log signature details.
             $log->setEventInfoId($event->getId());
             $log->setMPattern($pattern);
             $log->setFirewallStateId($fw_policy);
             $log->setFirewallInterface($fw_interface);
             $log->setSourceIp($fw_source_ip);
             $log->setDestinationIp($fw_destination_ip);
             $log->setDestinationPort($fw_destination_port);
             $log->setIpProtocol($fw_ip_protocol);
             $log->setLogSampleId($log_sample->getId());
             $log->save();
             //print "Updating (FW) signature ".$event->getId()." source_name: $source_name and pattern: $pattern\n";
         }
         // Cleanup scope.
         $db_source_name = '';
         $publisher_id = '';
         $name = '';
         $source_name = '';
         $source_names = '';
         $category_name = '';
         $integrity_id = '';
         $comment = '';
         $xref = '';
         unset($event);
         unset($log);
         unset($log_sample);
     }
 }