Пример #1
0
 /**
  * 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);
 }
Пример #3
0
            ?>
</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');
         }
     }
 }
Пример #5
0
 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);
     }
 }
Пример #6
0
 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 '';
         }
     }
 }
Пример #8
0
<?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');
Пример #9
0
?>
		<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');
?>
Пример #10
0
                        <?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