コード例 #1
0
ファイル: table.php プロジェクト: klas/joomla-cms
 /**
  * Method to check a row in if the necessary properties/fields exist.  Checking
  * a row in will allow other users the ability to edit the row.
  *
  * @param   mixed  $pk  An optional primary key value to check out.  If not set the instance property value is used.
  *
  * @return  boolean  True on success.
  *
  * @link    https://docs.joomla.org/JTable/checkIn
  * @since   11.1
  * @throws  UnexpectedValueException
  */
 public function checkIn($pk = null)
 {
     $checkedOutField = $this->getColumnAlias('checked_out');
     $checkedOutTimeField = $this->getColumnAlias('checked_out_time');
     // If there is no checked_out or checked_out_time field, just return true.
     if (!property_exists($this, $checkedOutField) || !property_exists($this, $checkedOutTimeField)) {
         return true;
     }
     if (is_null($pk)) {
         $pk = array();
         foreach ($this->_tbl_keys as $key) {
             $pk[$this->{$key}] = $this->{$key};
         }
     } elseif (!is_array($pk)) {
         $pk = array($this->_tbl_key => $pk);
     }
     foreach ($this->_tbl_keys as $key) {
         $pk[$key] = empty($pk[$key]) ? $this->{$key} : $pk[$key];
         if ($pk[$key] === null) {
             throw new UnexpectedValueException('Null primary key not allowed.');
         }
     }
     // Check the row in by primary key.
     $query = $this->_db->getQuery(true)->update($this->_tbl)->set($this->_db->quoteName($checkedOutField) . ' = 0')->set($this->_db->quoteName($checkedOutTimeField) . ' = ' . $this->_db->quote($this->_db->getNullDate()));
     $this->appendPrimaryKeys($query, $pk);
     $this->_db->setQuery($query);
     // Check for a database error.
     $this->_db->execute();
     // Set table values in the object.
     $this->{$checkedOutField} = 0;
     $this->{$checkedOutTimeField} = '';
     return true;
 }
コード例 #2
0
ファイル: table.php プロジェクト: ranwaldo/joomla-platform
 /**
  * Method to check a row in if the necessary properties/fields exist.  Checking
  * a row in will allow other users the ability to edit the row.
  *
  * @param   mixed  $pk  An optional primary key value to check out.  If not set the instance property value is used.
  *
  * @return  boolean  True on success.
  *
  * @link    http://docs.joomla.org/JTable/checkIn
  * @since   11.1
  */
 public function checkIn($pk = null)
 {
     // If there is no checked_out or checked_out_time field, just return true.
     if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time')) {
         return true;
     }
     // Initialise variables.
     $k = $this->_tbl_key;
     $pk = is_null($pk) ? $this->{$k} : $pk;
     // If no primary key is given, return false.
     if ($pk === null) {
         throw new UnexpectedValueException('Null primary key not allowed.');
     }
     // Check the row in by primary key.
     $query = $this->_db->getQuery(true);
     $query->update($this->_tbl);
     $query->set($this->_db->quoteName('checked_out') . ' = 0');
     $query->set($this->_db->quoteName('checked_out_time') . ' = ' . $this->_db->quote($this->_db->getNullDate()));
     $query->where($this->_tbl_key . ' = ' . $this->_db->quote($pk));
     $this->_db->setQuery($query);
     // Check for a database error.
     $this->_db->execute();
     // Set table values in the object.
     $this->checked_out = 0;
     $this->checked_out_time = '';
     return true;
 }
コード例 #3
0
	/**
	 * Tests the JDatabaseDriver::getNullDate method.
	 *
	 * @return  void
	 *
	 * @since   11.4
	 */
	public function testGetNullDate()
	{
		$this->assertThat(
			$this->db->getNullDate(),
			$this->equalTo('1BC')
		);
	}
コード例 #4
0
 function checkin($oid = null)
 {
     $fldLockedBy = $this->getColumnAlias('locked_by');
     $fldLockedOn = $this->getColumnAlias('locked_on');
     if (!(in_array($fldLockedBy, array_keys($this->getProperties())) || in_array($fldLockedOn, array_keys($this->getProperties())))) {
         return true;
     }
     $k = $this->_tbl_key;
     if ($oid !== null) {
         $this->{$k} = $oid;
     }
     if ($this->{$k} == null) {
         return false;
     }
     $query = $this->_db->getQuery(true)->update($this->_db->qn($this->_tbl))->set(array($this->_db->qn($fldLockedBy) . ' = 0', $this->_db->qn($fldLockedOn) . ' = ' . $this->_db->q($this->_db->getNullDate())))->where($this->_db->qn($this->_tbl_key) . ' = ' . $this->_db->q($this->{$k}));
     $this->_db->setQuery((string) $query);
     $this->{$fldLockedBy} = 0;
     $this->{$fldLockedOn} = '';
     return $this->_db->execute();
 }
コード例 #5
0
ファイル: table.php プロジェクト: deenison/joomla-cms
 /**
  * The event which runs before storing (saving) data to the database
  *
  * @param   boolean  $updateNulls  Should nulls be saved as nulls (true) or just skipped over (false)?
  *
  * @return  boolean  True to allow saving
  */
 protected function onBeforeStore($updateNulls)
 {
     // Do we have a "Created" set of fields?
     $created_on = $this->getColumnAlias('created_on');
     $created_by = $this->getColumnAlias('created_by');
     $modified_on = $this->getColumnAlias('modified_on');
     $modified_by = $this->getColumnAlias('modified_by');
     $locked_on = $this->getColumnAlias('locked_on');
     $locked_by = $this->getColumnAlias('locked_by');
     $title = $this->getColumnAlias('title');
     $slug = $this->getColumnAlias('slug');
     $hasCreatedOn = in_array($created_on, $this->getKnownFields());
     $hasCreatedBy = in_array($created_by, $this->getKnownFields());
     if ($hasCreatedOn && $hasCreatedBy) {
         $hasModifiedOn = in_array($modified_on, $this->getKnownFields());
         $hasModifiedBy = in_array($modified_by, $this->getKnownFields());
         $nullDate = $this->_db->getNullDate();
         if (empty($this->{$created_by}) || $this->{$created_on} == $nullDate || empty($this->{$created_on})) {
             $uid = FOFPlatform::getInstance()->getUser()->id;
             if ($uid) {
                 $this->{$created_by} = FOFPlatform::getInstance()->getUser()->id;
             }
             $date = FOFPlatform::getInstance()->getDate('now', null, false);
             $this->{$created_on} = $date->toSql();
         } elseif ($hasModifiedOn && $hasModifiedBy) {
             $uid = FOFPlatform::getInstance()->getUser()->id;
             if ($uid) {
                 $this->{$modified_by} = FOFPlatform::getInstance()->getUser()->id;
             }
             $date = FOFPlatform::getInstance()->getDate('now', null, false);
             $this->{$modified_on} = $date->toSql();
         }
     }
     // Do we have a set of title and slug fields?
     $hasTitle = in_array($title, $this->getKnownFields());
     $hasSlug = in_array($slug, $this->getKnownFields());
     if ($hasTitle && $hasSlug) {
         if (empty($this->{$slug})) {
             // Create a slug from the title
             $this->{$slug} = FOFStringUtils::toSlug($this->{$title});
         } else {
             // Filter the slug for invalid characters
             $this->{$slug} = FOFStringUtils::toSlug($this->{$slug});
         }
         // Make sure we don't have a duplicate slug on this table
         $db = $this->getDbo();
         $query = $db->getQuery(true)->select($db->qn($slug))->from($this->_tbl)->where($db->qn($slug) . ' = ' . $db->q($this->{$slug}))->where('NOT ' . $db->qn($this->_tbl_key) . ' = ' . $db->q($this->{$this->_tbl_key}));
         $db->setQuery($query);
         $existingItems = $db->loadAssocList();
         $count = 0;
         $newSlug = $this->{$slug};
         while (!empty($existingItems)) {
             $count++;
             $newSlug = $this->{$slug} . '-' . $count;
             $query = $db->getQuery(true)->select($db->qn($slug))->from($this->_tbl)->where($db->qn($slug) . ' = ' . $db->q($newSlug))->where('NOT ' . $db->qn($this->_tbl_key) . ' = ' . $db->q($this->{$this->_tbl_key}));
             $db->setQuery($query);
             $existingItems = $db->loadAssocList();
         }
         $this->{$slug} = $newSlug;
     }
     // Call the behaviors
     $result = $this->tableDispatcher->trigger('onBeforeStore', array(&$this, $updateNulls));
     if (in_array(false, $result, true)) {
         // Behavior failed, return false
         return false;
     }
     // Execute onBeforeStore<tablename> events in loaded plugins
     if ($this->_trigger_events) {
         $name = FOFInflector::pluralize($this->getKeyName());
         $result = FOFPlatform::getInstance()->runPlugins('onBeforeStore' . ucfirst($name), array(&$this, $updateNulls));
         if (in_array(false, $result, true)) {
             return false;
         } else {
             return true;
         }
     }
     return true;
 }
コード例 #6
0
ファイル: client.php プロジェクト: Rai-Ka/joomla-cms
 /**
  * Constructor
  *
  * @param   JDatabaseDriver  $db  Database connector object
  *
  * @since   1.5
  */
 public function __construct(JDatabaseDriver $db)
 {
     $this->typeAlias = 'com_banners.client';
     $this->checked_out_time = $db->getNullDate();
     parent::__construct('#__banner_clients', 'id', $db);
 }
コード例 #7
0
 /**
  * Returns the zero date/time
  *
  * @param  string  $dateTime  'datetime', 'date', 'time'
  * @return string             Unquoted null/zero date string
  */
 public function getNullDate($dateTime = 'datetime')
 {
     return $this->formatDateOrTime($this->_db->getNullDate(), $dateTime);
 }