public function getCMSFields() { $fields = parent::getCMSFields(); $fields->insertBefore(new DropdownField('MemberID', 'Member', Member::get()->map('ID', "FirstName")), 'AttendingWholeEvent'); $siteConfig = SiteConfig::current_site_config(); $current = $siteConfig->getCurrentEventID(); if ($this->ParentID < 1) { $event = Event::get()->byID($current); } else { $event = Event::get()->byID($this->ParentID); } $fields->insertAfter(HiddenField::create('ParentID', 'Event', $event->ID), 'ExtraDetail'); $fields->removeByName('PublicFieldsRaw'); $fields->removeByName('Sort'); if ($this->PlayerGames()->Count() > 0) { $gridField = new GridField('PlayerGames', 'Games', $this->PlayerGames(), $config = GridFieldConfig_RelationEditor::create()); $gridField->setModelClass('PlayerGame'); $config->addComponent(new GridFieldOrderableRows()); $config->removeComponentsByType('GridFieldPaginator'); $config->removeComponentsByType('GridFieldPageCount'); $config->addComponent(new GridFieldDeleteAction(false)); $config->addComponent($export = new GridFieldExportButton('before')); $export->setExportColumns(singleton("PlayerGame")->getExportFields()); $fields->addFieldToTab('Root.PlayerGames', $gridField); } return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->insertBefore(TextareaField::create('Intro', 'Intro'), 'Content'); $fields->insertAfter(ColorPaletteField::create("Colour", "Colour", array('night' => '#333333', 'air' => '#009EE2', 'earth' => ' #79c608', 'passion' => '#b02635', 'people' => '#de347f', 'inspiration' => '#783980')), "Intro"); $fields->insertBefore($image = UploadField::create('SplashImage', 'Splash Image'), 'Content'); $image->setFolderName('Uploads/Splash-Images'); if ($this->ClassName === "Page" || $this->ClassName === "HomePage") { $fields->insertAfter(HTMLEditorField::create('ExtraContent'), 'Content'); $gridField = new GridField('FeatureItems', 'FeatureItems', $this->FeatureItems()->sort(array('Sort' => 'ASC', 'Archived' => 'ASC')), $config = GridFieldConfig_RelationEditor::create()); $gridField->setModelClass('FeatureItem'); $fields->addFieldToTab('Root.Features', $gridField); $config->addComponent(new GridFieldOrderableRows()); } else { if ($this->ClassName === "CalendarPage") { $content = $fields->dataFieldByName('Content'); $content->addExtraClass('no-pagebreak'); $events = Event::get()->sort(array('StartDateTime' => 'Desc'))->filterByCallback(function ($record) { return !$record->getIsPastEvent(); }); $gridField = new GridField('Event', 'Upcoming Events', $events, $config = GridFieldConfig_RecordEditor::create()); $gridField->setModelClass('Event'); $dataColumns = $config->getComponentByType('GridFieldDataColumns'); $dataColumns->setDisplayFields(array('Title' => 'Title', 'StartDateTime' => 'Date and Time', 'DatesAndTimeframe' => 'Presentation String')); $fields->addFieldToTab('Root.UpcomingEvents', $gridField); } } return $fields; }
private static function runEvents($eventName, &$data = NULL) { kohana::log('debug', 'Running event ' . $eventName); // Returns of the callbacks for event specified $events = Event::get($eventName); // Loop through each event, instantiate the event object, and call the event. // NOTE: We do this because we rely on __get/__set methods in bluebox plugins and they must be able to use $object-> // to reference the current controller $return_value = TRUE; foreach ($events as $event) { // Share our current controller w/ the event system Event::$data =& $data; // Go get our plugin object $obj =& self::initialize($event[0]); if (method_exists($obj, $event[1])) { $return = call_user_func(array($obj, $event[1])); kohana::log('debug', 'Plugin hook ' . get_class($obj) . '::' . $event[1] . '() returned ' . ($return ? 'true' : 'false')); // If the func doesnt have a return or its not bool, assume true if (is_null($return) || !is_bool($return)) { $return = TRUE; } // Bitwise AND of all the returns (if any returns false, the event will return false) $return_value = $return_value & $return; } else { throw new Exception('Tried to call plugin method ' . get_class($obj) . '::' . $event[1] . '(), but no such method exists. (Event ' . $eventName . ')'); } // Do this to prevent data from getting 'stuck' $clearData = ''; Event::$data =& $clearData; } return $return_value; }
public function init() { parent::init(); $member = Member::currentUser(); $this->member = $member; $request = $this->getRequest(); //echo $request->getVar('test'); //Setting dates based on request variables //We could add some sanity check herre $this->start = $request->getVar('start'); $this->end = $request->getVar('end'); if ($request->getVar('allDay') == 'true') { $this->allDay = true; } //Setting event based on request vars if (($eventID = (int) $request->getVar('eventID')) && $eventID > 0) { $event = Event::get()->byID($eventID); if ($event && $event->exists()) { if ($event->ClassName == 'PrivateEvent') { //Only show private events to their owners if ($event->OwnerID == $member->ID) { $this->event = $event; } } else { $this->event = $event; } } } }
private static function generate_data_for_day(SS_Datetime $date) { $data = array('timestamp' => time(), 'searchDate' => $date->Format("Y-m-d"), 'collections' => array('events' => array(), 'galleries' => array(), 'locations' => array())); $galleryIDs = array(); $locationIDs = array(); // Get events $where = sprintf("DATE(`StartDate`) = '%s'", $date->Format('Y-m-d')); $events = Event::get()->where($where)->exclude(array("GalleryID" => 0, "Gallery.LocationID" => 0)); foreach ($events as $event) { $galleryIDs[] = $event->GalleryID; $data['collections']['events'][] = $event->forAPI(); } // Get galleries $galleries = Gallery::get()->byIDs(array_unique($galleryIDs)); foreach ($galleries as $gallery) { $locationIDs[] = $gallery->LocationID; $data['collections']['galleries'][] = $gallery->forAPI(); } // Get locations $locations = Location::get()->byIDs(array_unique($locationIDs)); foreach ($locations as $location) { $data['collections']['locations'][] = $location->forAPI(); } return $data; }
/** * Filters the Response. * * @param Event $event An Event instance * @param Response $response A Response instance */ public function filter($event, Response $response) { if (HttpKernelInterface::MASTER_REQUEST !== $event->get('request_type')) { return $response; } $this->esi->addSurrogateControl($response); return $response; }
public function updateCMSFields(FieldList $fields) { if (count(Event::get()) > 0) { $current = new DropdownField('CurrentEventID', 'CurrentEvent', Event::get()->map('ID', 'Title')); $current->setEmptyString(''); $fields->addFieldToTab('Root.Events', $current); } $events = new GridField('Events', 'Event', Event::get(), GridFieldConfig_RecordEditor::create()); $fields->addFieldToTab('Root.Events', $events); }
/** * Main route for events page * * Route: /events */ public function index() { $event = new Event(); $event->where('start >', date('Y-m-d H:m:s')); $event->order_by('start', 'asc'); $event->get(); $data['events'] = $event; // Create the view $this->template->title = 'Events'; $this->template->javascript->add('assets/js/masonry.min.js'); $this->template->content->view('events/index', $data); $this->template->publish(); }
/** * Register action * @param type $data * @param type $form * @return \SS_HTTPResponse */ public function doRegister($data, $form) { $r = new EventRegistration(); $form->saveInto($r); $EventDetails = Event::get()->byID($r->EventID); if ($EventDetails->TicketsRequired) { $r->AmountPaid = $r->AmountPaid / 100; } $r->write(); $from = Email::getAdminEmail(); $to = $r->Email; $bcc = $EventDetails->RSVPEmail; $subject = "Event Registration - " . $EventDetails->Title . " - " . date("d/m/Y H:ia"); $body = ""; $email = new Email($from, $to, $subject, $body, null, null, $bcc); $email->setTemplate('EventRegistration'); $email->send(); exit; }
public function getFieldsForEventDay($daysFromNow = 0) { // Get time if ($daysFromNow === 0) { $time = time(); } elseif ($daysFromNow === 1) { $time = strtotime('+1 day'); } else { $time = strtotime("+{$daysFromNow} days"); } // Field data $date = date('Y-m-d', $time); $name = 'DaysEvents_' . date('l', $time); $title = date('l', $time) . "'s Events - " . date('d/m/Y', $time); $events = Event::get()->where("DATE(`StartDate`) = '{$date}'"); $eventsGrid = GridField::create($name, $title, $events, GridFieldConfig_RecordEditor::create()->removeComponentsByType('GridFieldPageCount')->removeComponentsByType('GridFieldAddNewButton')->addComponent(new GridFieldAddNewButton('toolbar-header-right'))); $fields = FieldList::create($eventsGrid); $tabTitle = date('l', $time) . " ({$events->count()})"; return array('Fields' => $fields, 'TabTitle' => $tabTitle); }
public function getCMSFields() { $fields = parent::getCMSFields(); $fields->removeByName('Sort'); $siteConfig = SiteConfig::current_site_config(); $current = $siteConfig->getCurrentEventID(); if ($this->Event()->ID) { $event = $this->Event(); } else { if ($this->Parent()->ParentID > 0) { $event = Event::get()->byID($this->Parent()->ParentID); } else { $event = Event::get()->byID($current); } } if ($event) { $prefNum = $event->PreferencesPerSession ? $event->PreferencesPerSession : 2; } else { $prefNum = 2; } $pref = array(); for ($i = 1; $i <= $prefNum; $i++) { $pref[$i] = $i; } $preference = new DropdownField('Preference', 'Preference', $pref); $preference->setEmptyString(' '); $fields->insertAfter($preference, 'GameID'); $status = array(0 => "Pending/Declined", 1 => "Accepted"); $fields->insertAfter(new OptionsetField('Status', 'Status', $status), 'Preference'); $reg = Registration::get()->filter(array('ParentID' => $event->ID))->map('ID', "Title"); $player = new DropdownField('ParentID', 'Player', $reg); $player->setEmptyString(' '); $fields->insertAfter($player, 'Status'); $fields->insertAfter($fields->dataFieldByName('Favourite'), 'Status'); $fields->insertAfter($fields->dataFieldByName('ParentID'), 'GameID'); $event = HiddenField::create('EventID', 'Event', $event->ID); $fields->insertAfter($event, 'GameID'); return $fields; }
public function getCMSFields() { $fields = parent::getCMSFields(); $siteConfig = SiteConfig::current_site_config(); $current = $siteConfig->getCurrentEventID(); if ($this->ParentID < 1) { $event = Event::get()->byID($current); } else { $event = Event::get()->byID($this->ParentID); } $parent = HiddenField::create('ParentID', 'Event', $event->ID); $fields->insertAfter($parent, 'Details'); $sessions = array(); if ($event) { for ($i = 1; $i <= $event->NumberOfSessions; $i++) { $sessions[$i] = $i; } } $session = new DropdownField('Session', 'Session', $sessions); $session->setEmptyString(' '); $fields->insertAfter($session, 'Title'); $fields->insertAfter($member = new DropdownField('FacilitatorID', 'Facilitator', Member::get()->map('ID', 'Name')), 'Session'); $member->setEmptyString(' '); $fields->insertAfter(new TextField('FacilitatorText', 'Or enter facilitator name(s)'), 'FacilitatorID'); $status = array(0 => "Pending", 1 => "Accepted"); $fields->insertBefore(new OptionsetField('Status', 'Status', $status), 'Title'); $gridField = $fields->dataFieldByName("Players"); if ($gridField) { $config = $gridField->getConfig(); $config->getComponentByType('GridFieldDataColumns')->setDisplayFields(singleton("PlayerGame")->getGameDisplayFields()); $config->addComponent(new GridFieldOrderableRows()); $config->removeComponentsByType('GridFieldPaginator'); $config->removeComponentsByType('GridFieldPageCount'); $config->addComponent($export = new GridFieldExportButton('before')); $export->setExportColumns(singleton("PlayerGame")->getExportFields()); } return $fields; }
public function send_newsletter() { $this->load->library('markdown'); $currentWeek = date("W"); $currentYear = date("Y"); $dates = $this->getStartAndEndDate($currentWeek, $currentYear); // Generate the message $event = new Event(); $event->where('WEEKOFYEAR(start) =', $currentWeek); $event->order_by('start', 'asc'); $event->get(); $data['dates'] = $dates; $data['events'] = $event; $message = $this->load->view('email/newsletter', $data, TRUE); $this->load->library('email'); $config['mailtype'] = 'html'; $this->email->initialize($config); $this->email->from('*****@*****.**', 'FSC Nexus'); $this->email->subject('Weekly Newsletter for ' . $dates[0] . ' to ' . $dates[1]); $this->email->to($this->input->post('email')); $this->email->message($message); $this->email->send(); }
public function testParseEvent() { $eventTag = new Event(); $eventTag->set("Some Ordinary Event"); $unparsedTag = '[Event "Some Ordinary Event"]'; $errors = null; $parsed = Tag::parse($unparsedTag, $errors); echo "errors: "; var_dump($errors); $this->assertInstanceof('pgn\\tags\\Event', $parsed); $this->assertSame($eventTag->get(), $parsed->get()); $this->assertNotNull($errors); $this->assertEquals(0, count($errors)); }
} ?> </section> <?php $liste = Event::last(); if (count($liste)) { ?> <section class="contenu demi"> <h4>Dernières interactions</h4> <ul class="listeDesEvenements"> <?php foreach ($liste as $event) { $e = new Event($event['id']); $c = new People($e->get('people')); ?> <li class="evenement <?php echo $e->get('type'); ?> <?php if ($e->link()) { ?> clic<?php } ?> "> <small><span><?php echo Event::displayType($e->get('type')); ?> </span></small>
/** * Displays details of an event * @param $req * @return array */ function detail($req) { $event = Event::get()->byID($req->param('ID')); if (!$event) { return $this->httpError(404); } return array('Event' => $event); }
<h4>Événements connus</h4> <ul class="listeDesEvenements"> <li class="evenement nouvelEvenement"> <strong>Créer un nouvel événement</strong> </li> <?php $events = $data->events(); if (count($events)) { foreach ($events as $event) { $event = new Event($event['id']); ?> <?php // on regarde si on peut ouvrir l'événement if ($event->link() == 2) { echo '<a href="#" class="accesEvenement nostyle evenement-' . $event->get('id') . '" data-evenement="' . $event->get('id') . '">'; } elseif ($event->link() == 1) { echo '<a href="'; Core::goPage($event->get('type'), array('campagne' => $event->get('campaign'))); echo '" class="nostyle">'; } ?> <li class="evenement <?php echo $event->get('type'); ?> <?php if ($event->link()) { ?> clic<?php } ?>
?> </textarea></span> </li> </ul> </section> <section class="contenu demi"> <h4>Tâches liées à ce dossier</h4> <ul class="listeDesTaches"> <?php $taches = $dossier->tasks(); if (count($taches)) { foreach ($taches as $tache) { $e = new Event($tache['event']); $c = new People($e->get('people')); ?> <li class="tache"> <strong><?php echo $tache['task']; ?> </strong> <ul class="infosAnnexes"> <li class="contact sansChanger"><?php echo $c->display_name(); ?> </li> </ul> </li> <?php }
/** * This method executes all of the callbacks in a given event * queue. * * The first function argument takes as its value a string and is * the name of the event queue to process. * * The second function argument takes as its value an array and is * passed to the callbacks being executed. * * ###### Example * * Event::run('system.post_controller'); * * @param string event name * @param array data can be processed as Event::$data by the callbacks * @return void */ public static function run($name, &$data = NULL) { if (!empty(Event::$events[$name])) { // So callbacks can access Event::$data Event::$data =& $data; $callbacks = Event::get($name); foreach ($callbacks as $callback) { call_user_func_array($callback, array(&$data)); } // Do this to prevent data from getting 'stuck' $clear_data = ''; Event::$data =& $clear_data; } // The event has been run! Event::$has_run[$name] = $name; }
/** * */ public static function controller($id, $xml) { $msg = 'Adding controller "' . $id . '" routes with website router helper!'; ptc_log($msg, '', \App::option('website.debug_category') . ' Config'); $listeners = \Event::get('website'); if (is_array($listeners) && isset($listeners['load_routes_xml'])) { ptc_fire('website.load_routes_xml', array($id, &$xml)); } $routes = new Routes($id, $xml); $routes->compile(); }
/** * Execute all of the callbacks attached to an event. * * @param string event name * @param array data can be processed as Event::$data by the callbacks * @return void */ public static function run($name, &$data = NULL) { if (!empty(Event::$_events[$name])) { // Store this so we can run inner events Event::$_stack[] =& $data; // So callbacks can access Event::$data Event::$data =& $data; $callbacks = Event::get($name); foreach ($callbacks as $callback) { call_user_func($callback); } // We don't need $data anymore array_pop(Event::$_stack); // Restore the previous $data value $previous_data = end(Event::$_stack); Event::$data =& $previous_data; } // The event has been run! Event::$_has_run[$name] = $name; }
public function GameSignupFields($reg) { $fields = new FieldList(); $currentID = $this->getCurrentEvent()->ID; $event = Event::get()->byID($currentID); $prefNum = $event->PreferencesPerSession; $reg = $this->getCurrentRegistration(); $fields->push(new HiddenField('RegistrationID', 'Reg', $reg->ID)); $fields->push($fav = new HiddenField('FavouriteID', 'Favourite')); $fav->addExtraClass('favourite-id'); $fields->push(new LiteralField('no-js', '<p class="js-hide">This page works better with javascript. If you can\'t use javascript, rank the items below in your order of preference. 1 for your first choice, 2 for your second. Note, only the top ' . $prefNum . ' will be recorded</p>')); for ($session = 1; $session <= $event->NumberOfSessions; $session++) { $evenOdd = $session % 2 == 0 ? 'even' : 'odd'; $fieldset = '<fieldset id="round' . $session . '" class="preference-group preference-' . $prefNum . ' data-preference-select="preference-select-group">'; $fields->push(new LiteralField('Heading_' . $session, '<h5>Round ' . $session . ' preferences</h5>' . $fieldset)); $games = Game::get()->filter(array('Session' => $session, 'ParentID' => $currentID, 'Status' => true))->sort('RAND()'); $i = 1; foreach ($games as $game) { $gameOptions = new NumericField("GameID_" . $game->ID, ''); $gameOptions->setValue($i)->setRightTitle($game->Title)->setAttribute('type', 'number')->setAttribute('data-id', $game->ID)->addExtraClass('small-input js-hide-input'); $fields->push($gameOptions); $i++; } // Add not playing option $gameOptions = new NumericField("NotPlaying_" . $session, ''); $gameOptions->setValue($i)->setRightTitle("No game (or Facilitating)")->setAttribute('type', 'number')->addExtraClass('small-input js-hide-input not-playing'); $fields->push($gameOptions); $fields->push(new LiteralField('fieldset', '</fieldset>')); } return $fields; }
/** * Adds an event * * Data should include the following keys * - id (unique event id) * - date_start (unix timestamp) * - date_end (unix timestamp) * - title (event title) * - description (description text) * - categories (array of categories) * - location (name of city) * - address * - image_url * * @param array $data Event data */ public static function add($data = array()) { $requiredKeysExists = \HbgEventImporter\Helper\Arr::arrayKeysExist($data, 'id', 'date_start', 'date_end', 'title', 'description', 'categories', 'location', 'address', 'image_url', 'ticket_link'); if (!$requiredKeysExists) { return false; } // Check if event uid already exists $postId = Event::get(1, array(array('key' => 'event-uid', 'value' => $data['id'], 'compare' => '=')), array('publish', 'draft', 'pending')); $postId = isset($postId->ID) ? $postId->ID : null; // Update or create event if ($postId !== null) { if (get_field('event-sync', $postId) !== true && get_field('event-sync', $postId) != '1') { return; } wp_update_post(array('ID' => $postId, 'post_title' => $data['title'], 'post_content' => $data['description'])); } else { $postId = wp_insert_post(array('post_title' => $data['title'], 'post_content' => $data['description'], 'post_status' => get_field('xcap_post_status', 'option') ? get_field('xcap_post_status', 'option') : 'publish', 'post_type' => 'event')); } $data['categories'] = array_map('trim', $data['categories']); $data['categories'] = array_map('ucwords', $data['categories']); wp_set_object_terms($postId, $data['categories'], 'event-types', true); self::addPostMeta($postId, $data); self::saveImageFromUrl($postId, $data['image_url']); }
</li> </ul> </div> </div>--> <div class="componentContainer"> <div class="heading"> <p>Sponsorships open to take</p> </div> <div class="ccContainer lastList lastListWithScroll eventListArea"> <ul> <?php $openSponsorships = $sponsorshipTools->getAllOpenSponsorships(); foreach ($openSponsorships as $openS) { $event = Event::get($openS->event_id); $event_date = new DateTime($event->date); echo "<li class='clickable-li open-sponsorship-entry'>"; echo "<input id='sponsorship-id' type='hidden' value='" . $openS->id . "'/>"; echo "<h3>"; echo $event->title; echo "</h3>" . "<span>" . $event_date->format("dS M") . "</span>"; echo "<p>"; echo $openS->name . " (Rs." . $openS->amount . ")"; echo "</p>"; echo "</li>"; } ?> </ul> </div>
public function getEvents() { $events = Event::get()->sort('Date'); return $events; }
<?php require 'config.php'; include DIR_LIB . 'helpers/ui.php'; Authentication::require_login(); $err = ''; if (isset($_GET['delete'])) { $events = Event::get($where = array('id' => $_GET['delete'])); if (empty($events)) { $err = 'Event does not exist.'; } else { $event = $events[0]; if ($event->getUserId() == Authentication::get_user() || PermissionMgr::groupHasPermission(Authentication::getUserObject()->getGroupId(), 'is_administrator')) { $event->delete(); } header("Location: //" . APP_ROOT_URL . 'calendar.php'); } } if (isset($_POST['doadd'])) { if (strlen($_POST['event_name']) > 160) { $err = "Event Description above 160 characters, shorten it and try again!"; } else { if (trim($_POST['event_name']) == '') { $err = "Please fill in the event description."; } else { if (trim($_POST['start_time']) == '') { $err = "Please pick a start time."; } } } $all_day = '0';
public function GameFields() { $fields = new FieldList(); // get current event $siteConfig = SiteConfig::current_site_config(); $current = $siteConfig->getCurrentEventID(); $event = Event::get()->byID($current); $genres = $this->getGroupedGames('Genre'); $fields->push(new HiddenField('ID')); $fields->push(new TextField('Title')); $fields->push(new TextField('Restriction', 'Restriction (R18, PG, etc)')); // tag input field $fields->push($tagfield = new TextField('Genre', 'Genres')); $tagfield->addExtraClass('tag-field genre'); // hidden field for all current genres $fields->push(new LiteralField('GenreList', $this->renderGenreList($genres))); $briefEditor = new TextAreaField('Brief', 'Brief (Short Description)'); $briefEditor->setRows(5); $fields->push($briefEditor); $detailsEditor = CompositeField::create(new LabelField('GameDetails', 'Game Details'), $html = new HTMLEditorField('Details'), new LiteralField('editorDiv', '<div class="editable"></div>')); $fields->push($detailsEditor); $html->addExtraClass('hide'); $detailsEditor->addExtraClass('field'); $costuming = new TextAreaField('Costuming', 'Costuming'); $costuming->setRows(5); $fields->push($costuming); $fields->push(new TextField('NumPlayers', 'Number of players')); $sessions = array(); if ($event) { for ($i = 1; $i <= $event->NumberOfSessions; $i++) { $sessions[$i] = $i; } $session = new DropdownField('Session', 'Preferred Session', $sessions); $session->setEmptyString(' '); $fields->push($session); } return $fields; }
<?php require_once './global.inc.php'; verify_oauth_session_exists(); $event_id = $_POST["event_id"]; $event_details = Event::get($event_id); $spTools = new SponsorshipTools(); $sponsorship_details = $spTools->getAllSponsorshipsByEvent($event_id); $sponsorships = array(); foreach ($sponsorship_details as $sp) { $company = NULL; if ($sp->taken_by != "") { $company = Company::get($sp->taken_by); } array_push($sponsorships, array($sp, $company)); } echo json_encode(array($event_details, $sponsorships));
public function __call($method, $args = null) { $method_order = explode('OrderBy', $method); preg_match('/^(select)|(update)|(delete)|(count)/', $method_order[0], $matches); if (!empty($matches[0])) { $class = get_class($this); $query = Table::constructQuery($class, $matches[0], $method, $args); switch ($matches[0]) { case 'count': return reset(reset(Table::query($query))); case 'select': if (empty($args[self::ARRAY_SINGLE]) && empty($args[self::OBJECT_SINGLE]) && empty($args[self::ARRAY_MULTIPLE]) && empty($args[self::OBJECT_MULTIPLE])) { if (strstr($method_order[0], 'All') === false) { $args[self::OBJECT_SINGLE] = true; } else { $args[self::OBJECT_MULTIPLE] = true; } } foreach (self::$_inject_modes as $mode) { if (!empty($args[$mode])) { $inject_mode = $mode; break; } } $result = Table::query($query); if (!empty($result)) { switch ($inject_mode) { case self::ARRAY_SINGLE: return reset($result); case self::OBJECT_SINGLE: $object = new $class(reset($result)); if (ENABLE_LOG && $this->_logging) { Event::log($object, Event::BROWSE, '', Session::getUser()); } return $object; case self::ARRAY_MULTIPLE: $collection = array(); foreach ($result as $struct) { $collection[] = $struct; } return $collection; case self::OBJECT_MULTIPLE: $collection = array(); foreach ($result as $struct) { $collection[] = new $class($struct); } return $collection; } } else { switch ($inject_mode) { case self::ARRAY_SINGLE: case self::ARRAY_MULTIPLE: case self::OBJECT_MULTIPLE: return array(); case self::OBJECT_SINGLE: return null; } } case 'update': $primary_key = constant($class . '::PRIMARY'); if (empty($this->{$primary_key})) { if (method_exists($this, '_onInsert')) { $this->_onInsert(); } } else { if (method_exists($this, '_onUpdate')) { $this->_onUpdate(); } } $args = get_object_vars($this); foreach ($args as $arg => $val) { if (substr($arg, 0, 1) == '_') { unset($args[$arg]); } } $query = Table::constructQuery($class, $matches[0], $method, $args); $result = Table::query($query); $primary = constant($class . '::PRIMARY'); if (empty($this->{$primary})) { $this->{$primary} = $result; try { if (ENABLE_LOG && $this->_logging) { Event::log($this, Event::CREATE, '', Session::getUser()); } } catch (Exception $exc) { } } else { try { if (ENABLE_LOG && $this->_logging) { $event = Event::get()->selectOneByEntityIdAndEntityAndActionOrderByDescTimestamp($this->{$primary}, $class, Event::BROWSE); if (!empty($event)) { if ($this->_isDirty()) { $event->timestamp = time(); $event->action = Event::MODIFY; $event->initial = str_replace(array("'", '"'), array('', "'"), $this->_initial); $event->update(); } else { $event->delete(); } } } } catch (Exception $exc) { } } return $result; case 'delete': if (empty($args)) { $primary = constant($class . '::PRIMARY'); $args = array($this->{$primary}); $method = 'deleteOneBy' . str_replace(' ', '', ucwords(str_replace('_', ' ', $primary))); } if (method_exists($this, '_onDelete')) { $this->_onDelete(); } $query = Table::constructQuery($class, $matches[0], $method, $args); try { if (ENABLE_LOG && $this->_logging) { Event::log($this, Event::DELETE, $this->_initial, Session::getUser()); } } catch (Exception $exc) { } return Table::query($query); } } }
/** * Execute all of the callbacks attached to an event. * * @param string name * @param mixed data * @return void */ public static function run($name, &$data = NULL) { // Event has been run Event::$_has_run[$name] = TRUE; if (empty(Event::$_events[$name])) { return; } Event::$data =& $data; $callbacks = Event::get($name); foreach ($callbacks as $callback) { call_user_func_array($callback, array(&$data)); } $clear_data = NULL; Event::$data =& $clear_data; return; }