/** * Method to get an ojbect. * * @param integer The id of the object to get. * * @return mixed Object on success, false on failure. */ public function &getData($id = null) { if ($this->_item === null) { $this->_item = false; if (empty($id)) { $id = $this->getState('poi.id'); } // Get a level row instance. $table = $this->getTable(); // Attempt to load the row. if ($table->load($id)) { // Check published state. if ($published = $this->getState('filter.published')) { if ($table->state != $published) { return $this->_item; } } // Convert the JTable to a clean JObject. $properties = $table->getProperties(1); $this->_item = JArrayHelper::toObject($properties, 'JObject'); } elseif ($error = $table->getError()) { $this->setError($error); } } if (is_object($this->_item)) { $step = CitybrandingFrontendHelper::getStepByStepId($this->_item->stepid); if ($step) { $this->_item->stepid_title = $step['stepid_title']; $this->_item->stepid_color = $step['stepid_color']; } if (isset($this->_item->created_by)) { $this->_item->created_by_name = JFactory::getUser($this->_item->created_by)->name; } $category = JCategories::getInstance('Citybranding')->get($this->_item->catid); if ($category) { $prms = json_decode($category->params); // if(isset($prms->citybranding_category_emails)) // $this->_item->notification_emails = explode("\n", $prms->citybranding_category_emails); // else // $this->_item->notification_emails = array(); if (isset($prms->image)) { $this->_item->category_image = $prms->image; } else { $this->_item->category_image = ''; } $this->_item->catid_title = $category->title; } else { $this->_item->category_image = ''; $this->_item->catid_title = 'CATEGORY IS NO LONGER PUBLISHED'; } } return $this->_item; }
/** * Method to get the field input markup. * * @return string The field input markup. * @since 1.6 */ protected function getInput() { // Initialize variables. $html = array(); $time_created = $this->value; if (!strtotime($time_created)) { $time_created = CitybrandingFrontendHelper::convert2UTC(date("Y-m-d H:i:s")); } $hidden = (bool) $this->element['hidden']; if ($hidden == null || !$hidden) { $jdate = new JDate(CitybrandingFrontendHelper::convertFromUTC($time_created)); $pretty_date = $jdate->format(JText::_('DATE_FORMAT_LC2')); $html[] = "<span>" . $pretty_date . "</span>"; } $html[] = '<input type="hidden" name="' . $this->name . '" value="' . $time_created . '" />'; return implode("\n", $html); }
?> </p> <?php $first = false; ?> <?php } ?> <p><?php echo $log['description']; ?> </p> <span class="cd-date"><?php echo CitybrandingFrontendHelper::getRelativeTime($log['created']); ?> </span> </div> </div> <?php $first = false; ?> <?php } ?> </section> </div> </div> </div> <!-- /container -->
public function onAfterStepModified($model, $validData, $id = null) { $details = $this->getDetails($id, $model); $app = JFactory::getApplication(); $showMsgsFrontend = $this->params->get('messagesfrontend') && !$app->isAdmin(); $showMsgsBackend = $this->params->get('messagesbackend') && $app->isAdmin(); $step = CitybrandingFrontendHelper::getStepByStepId($validData['stepid']); $MENUALIAS = $this->params->get('menualias'); $appSite = JApplication::getInstance('site'); $router = $appSite->getRouter(); $uri = $router->build('index.php?option=com_citybranding&view=poi&id=' . (int) ($id == null ? $validData['id'] : $id)); $parsed_url = $uri->toString(); $parsed_url = str_replace('administrator/', '', $parsed_url); $parsed_url = str_replace('component/citybranding', $MENUALIAS, $parsed_url); $poiLink = $_SERVER['HTTP_HOST'] . $parsed_url; //Prepare email for admins if ($this->params->get('mailstatuschangeadmins')) { $subject = sprintf(JText::_('PLG_CITYBRANDING_MAIL_NOTIFIER_ADMINS_STEP_MODIFIED_SUBJECT'), $id == null ? $validData['id'] : $id); $body = sprintf(JText::_('PLG_CITYBRANDING_MAIL_NOTIFIER_ADMINS_STEP_MODIFIED_BODY'), $validData['title'], $step['stepid_title'], JFactory::getUser()->name); if (empty($details->emails) || $details->emails[0] == '') { if ($showMsgsBackend) { $app->enqueueMessage(JText::_('PLG_CITYBRANDING_MAIL_NOTIFIER_ADMINS_MAIL_NOT_SET') . CitybrandingFrontendHelper::getCategoryNameByCategoryId($validData['catid']), 'warning'); } } else { $recipients = implode(',', $details->emails); if ($this->sendMail($subject, $body, $details->emails)) { if ($showMsgsBackend) { $app->enqueueMessage(JText::_('PLG_CITYBRANDING_MAIL_NOTIFIER_ADMINS_MAIL_CONFIRM') . $recipients); } } else { if ($showMsgsBackend) { $app->enqueueMessage(JText::_('PLG_CITYBRANDING_MAIL_NOTIFIER_MAIL_FAILED') . $recipients, 'error'); } } } } //Prepare email for user if ($this->params->get('mailstatuschangeuser')) { $subject = sprintf(JText::_('PLG_CITYBRANDING_MAIL_NOTIFIER_USER_STEP_MODIFIED_SUBJECT'), $id == null ? $validData['id'] : $id); $body = sprintf(JText::_('PLG_CITYBRANDING_MAIL_NOTIFIER_USER_STEP_MODIFIED_BODY'), $validData['title'], $step['stepid_title'], $poiLink); $body .= '<a href="http://' . $poiLink . '">' . $poiLink . '</a>'; if ($this->sendMail($subject, $body, $details->usermail)) { if ($showMsgsBackend) { $app->enqueueMessage(JText::_('PLG_CITYBRANDING_MAIL_NOTIFIER_MAIL_STEP_MODIFIED_CONFIRM') . $details->usermail . ' (' . $details->username . ')'); } if ($showMsgsFrontend) { $app->enqueueMessage(JText::_('PLG_CITYBRANDING_MAIL_NOTIFIER_MAIL_STEP_MODIFIED_CONFIRM') . $details->usermail . ' (' . $details->username . ')'); } } else { $app->enqueueMessage(JText::_('PLG_CITYBRANDING_MAIL_NOTIFIER_MAIL_FAILED') . $recipients, 'error'); } } }
public function modifications() { $result = null; $app = JFactory::getApplication(); try { self::validateRequest(); if ($app->input->getMethod() != 'GET') { throw new Exception('You cannot use other method than GET to fetch timestamp'); } $args = array('ts' => $app->input->getString('ts')); CitybrandingFrontendHelper::checkNullArguments($args); if (!CitybrandingFrontendHelper::isValidTimeStamp($args['ts'])) { throw new Exception('Invalid timestamp'); } //handle unexpected warnings set_error_handler(array($this, 'exception_error_handler')); $result = self::getTimestamp($args['ts']); restore_error_handler(); echo new JResponseJson($result, 'Updates since timestamp fetched successfully'); } catch (Exception $e) { header("HTTP/1.0 202 Accepted"); echo new JResponseJson($e); } }
protected function postSaveHook(JModelLegacy $model, $validData = array()) { //A: inform log table about the new poi if ($validData['id'] == 0) { $log = JTable::getInstance('Log', 'CitybrandingTable', array()); $catTitle = CitybrandingFrontendHelper::getCategoryNameByCategoryId($validData['catid']); $data2['id'] = 0; $data2['state'] = 1; $data2['action'] = JText::_('COM_CITYBRANDING_LOGS_ACTION_INITIAL_COMMIT'); $data2['poiid'] = $model->getItem()->get('id'); $data2['stepid'] = $validData['stepid']; $data2['description'] = JText::_('COM_CITYBRANDING_LOGS_ACTION_INITIAL_COMMIT') . ' ' . JText::_('COM_CITYBRANDING_LOGS_AT_CATEGORY') . ' ' . $catTitle; $data2['created'] = $validData['created']; $data2['created_by'] = $validData['created_by']; $data2['updated'] = $validData['created']; $data2['language'] = $validData['language']; $data2['rules'] = $validData['rules']; if (!$log->bind($data2)) { JFactory::getApplication()->enqueueMessage('Cannot bind data to log table', 'error'); } if (!$log->save($data2)) { JFactory::getApplication()->enqueueMessage('Cannot save data to log table', 'error'); } try { $dispatcher = JEventDispatcher::getInstance(); $results = $dispatcher->trigger('onAfterNewPoiAdded', array($model, $validData)); // Check the returned results. This is for plugins that don't throw // exceptions when they encounter serious errors. if (in_array(false, $results)) { throw new Exception($dispatcher->getError(), 500); } } catch (Exception $e) { // Handle a caught exception. throw $e; } } else { //a. check for step modification if (isset($validData['is_step_modified']) && $validData['is_step_modified'] === 'true') { $user = JFactory::getUser(); $log = JTable::getInstance('Log', 'CitybrandingTable', array()); $data2['id'] = 0; $data2['state'] = 1; $data2['action'] = JText::_('COM_CITYBRANDING_LOGS_ACTION_STEP_MODIFIED'); $data2['poiid'] = $validData['id']; $data2['stepid'] = $validData['stepid']; $data2['description'] = $validData['step_modified_description']; $data2['created'] = $validData['updated']; $data2['created_by'] = $user->id; $data2['updated'] = $validData['updated']; $data2['language'] = $validData['language']; $data2['rules'] = $validData['rules']; if (!$log->bind($data2)) { JFactory::getApplication()->enqueueMessage('Cannot bind data to log table', 'error'); } if (!$log->save($data2)) { JFactory::getApplication()->enqueueMessage('Cannot save data to log table', 'error'); } $dispatcher = JEventDispatcher::getInstance(); $dispatcher->trigger('onAfterStepModified', array($model, $validData)); } //b. check for category modification if (isset($validData['is_category_modified']) && $validData['is_category_modified'] === 'true') { $user = JFactory::getUser(); $log = JTable::getInstance('Log', 'CitybrandingTable', array()); $data2['id'] = 0; $data2['state'] = 1; $data2['action'] = JText::_('COM_CITYBRANDING_LOGS_ACTION_CATEGORY_MODIFIED'); $data2['poiid'] = $validData['id']; $data2['stepid'] = $validData['stepid']; $data2['description'] = $validData['category_modified_description']; $data2['created'] = $validData['updated']; $data2['created_by'] = $user->id; $data2['updated'] = $validData['updated']; $data2['language'] = $validData['language']; $data2['rules'] = $validData['rules']; if (!$log->bind($data2)) { JFactory::getApplication()->enqueueMessage('Cannot bind data to log table', 'error'); } if (!$log->save($data2)) { JFactory::getApplication()->enqueueMessage('Cannot save data to log table', 'error'); } $dispatcher = JEventDispatcher::getInstance(); $dispatcher->trigger('onAfterCategoryModified', array($model, $validData)); } } //B: move any images only if record is new if ($validData['id'] == 0) { //check if any files uploaded $obj = json_decode($validData['photo']); if (empty($obj->files)) { return; } $srcDir = JPATH_ROOT . '/' . $obj->imagedir . '/' . $obj->id; $dstDir = JPATH_ROOT . '/' . $obj->imagedir . '/' . $model->getItem()->get('id'); $success = rename($srcDir, $dstDir); if ($success) { //update photo json isnew, id unset($obj->isnew); $obj->id = $model->getItem()->get('id'); $photo = json_encode($obj); // Create an object for the record we are going to update. $object = new stdClass(); $object->id = $model->getItem()->get('id'); $object->photo = $photo; // Update photo $result = JFactory::getDbo()->updateObject('#__citybranding_pois', $object, 'id'); } else { JFactory::getApplication()->enqueueMessage('Cannot move ' . $srcDir . ' to ' . $dstDir . '. Check folder rights', 'error'); } } }
public static function getRelativeTime($time) { if (strtotime($time) <= 0) { return ''; } $time = CitybrandingFrontendHelper::convertFromUTC($time); // Load the parameters. $app = JFactory::getApplication(); /* $params = $app->getParams(); $showrelativedates = $params->get('showrelativedates'); $dateformat = $params->get('dateformat'); if(!$showrelativedates){ //$item->reported_rel = date("d/m/Y",strtotime($item->reported)); return date($dateformat,strtotime($time)); } */ $SECOND = 1; $MINUTE = 60 * $SECOND; $HOUR = 60 * $MINUTE; $DAY = 24 * $HOUR; $MONTH = 30 * $DAY; $delta = time() - strtotime($time); if ($delta < 1 * $MINUTE) { return $delta == 1 ? JText::_('ONE_SECOND_AGO') : sprintf(JText::_('SECONDS_AGO'), $delta); } if ($delta < 2 * $MINUTE) { return JText::_('A_MINUTE_AGO'); } if ($delta < 45 * $MINUTE) { return sprintf(JText::_('MINUTES_AGO'), floor($delta / $MINUTE)); } if ($delta < 90 * $MINUTE) { return JText::_('AN_HOUR_AGO'); } if ($delta < 24 * $HOUR) { return sprintf(JText::_('HOURS_AGO'), floor($delta / $HOUR)); } if ($delta < 48 * $HOUR) { return JText::_('YESTERDAY'); } if ($delta < 30 * $DAY) { return sprintf(JText::_('DAYS_AGO'), floor($delta / $DAY)); } if ($delta < 12 * $MONTH) { $months = floor($delta / $DAY / 30); return $months <= 1 ? JText::_('ONE_MONTH_AGO') : sprintf(JText::_('MONTHS_AGO'), $months); } else { $years = floor($delta / $DAY / 365); if ($years < 100) { //TODO: needed for versions older than PHP5.3 return $years <= 1 ? JText::_('ONE_YEAR_AGO') : sprintf(JText::_('YEARS_AGO'), $years); } else { return ''; } } }
<?php /** * @version 1.0.0 * @package com_citybranding * @copyright Copyright (C) 2015. All rights reserved. * @license GNU AFFERO GENERAL PUBLIC LICENSE Version 3; see LICENSE * @author Ioannis Tsampoulatidis <*****@*****.**> - https://github.com/itsam */ // no direct access defined('_JEXEC') or die; require_once JPATH_COMPONENT_SITE . '/helpers/citybranding.php'; //TODO: Set this on settings $firstStep = CitybrandingFrontendHelper::getStepByStepId($this->item->stepid); if ($firstStep['ordering'] != 1 && isset($this->item->id) && $this->item->id > 0) { ?> <div class="alert alert-danger"><?php echo JText::_('COM_CITYBRANDING_POI_CANNOT_EDIT_ANYMORE'); ?> </div> <?php return; ?> <?php } ?> <?php JHtml::_('behavior.keepalive'); JHtml::_('behavior.tooltip');
?> <span style="color: <?php echo $step['stepid_color']; ?> "><?php echo $step['stepid_title']; ?> </span> </p> <p><strong><?php echo JText::_('COM_CITYBRANDING_FORM_LBL_POI_CATID'); ?> </strong>: <?php echo CitybrandingFrontendHelper::getCategoryNameByCategoryId($this->item->catid); ?> </p> <p><strong><?php echo JText::_('COM_CITYBRANDING_FORM_LBL_POI_ADDRESS'); ?> </strong>: <?php echo $this->item->address; ?> </p> <p><strong><?php echo JText::_('COM_CITYBRANDING_FORM_LBL_POI_DESCRIPTION'); ?>
<?php if (JFactory::getUser()->id == $item->created_by && $item->votes > 0) { ?> <span class="label label-default" title="<?php echo JText::_('COM_CITYBRANDING_POIS_VOTES'); ?> ">+<?php echo $item->votes; ?> </span> <?php } ?> <p><?php echo CitybrandingFrontendHelper::cutString($item->description, 200); ?> </p> <p><a href="<?php echo JRoute::_('index.php?option=com_citybranding&view=poi&id=' . (int) $item->id); ?> "><?php echo JText::_('COM_CITYBRANDING_POIS_MORE'); ?> </a></p> <?php if ($item->moderation == 1) { ?> <hr /> <p class="citybranding-warning"><i class="icon-info-sign"></i> <?php